Jadual Kandungan
Contoh
Kaedah 1
Algoritma
Output
Rumah pembangunan bahagian belakang C++ Purata bit yang ditetapkan dikira dalam rentetan binari yang diberikan selepas semua kemungkinan operasi K

Purata bit yang ditetapkan dikira dalam rentetan binari yang diberikan selepas semua kemungkinan operasi K

Aug 25, 2023 pm 12:29 PM
rentetan binari k operasi Tetapkan kiraan bit

Purata bit yang ditetapkan dikira dalam rentetan binari yang diberikan selepas semua kemungkinan operasi K

Dalam masalah ini, kita perlu mencari purata kiraan bit yang ditetapkan selepas melakukan semua operasi K terpilih pada rentetan yang diberikan.

Kaedah brute force boleh digunakan untuk menyelesaikan masalah, tetapi kami akan menggunakan prinsip kebarangkalian untuk mengatasi kerumitan masa kaedah brute force.

Pernyataan Masalah - Kami diberi integer N, array arr[] yang mengandungi K integer positif dan rentetan binari panjang N yang mengandungi hanya set bit. Kita perlu mencari purata kiraan bit yang ditetapkan selepas melakukan semua kemungkinan operasi K. Dalam operasi ke-3, kita boleh menyelak mana-mana bit arr[i] dalam rentetan yang diberikan.

Contoh

Input– N = 2, arr[] = {1, 2}

Output– 1

Penerangan – Rentetan binari awal ialah 11.

  • Dalam langkah pertama, kita boleh menyelak aksara pertama dan rentetannya ialah 01.

    • Dalam operasi kedua, kita perlu menyelak mana-mana dua bit. Jadi rentetan akan menjadi 10.

  • Pilihan kedua boleh bermula dengan membalikkan aksara kedua dari langkah pertama dan rentetannya ialah 10.

    • Dalam langkah kedua operasi semasa, kita perlu membalikkan mana-mana 2 bit, rentetan boleh menjadi 01.

Jadi, kita ada dua pilihan, rentetan akhir boleh jadi 01 atau 10.

Jumlah pilihan = 2, jumlah set bit dalam rentetan akhir = 2, ans = 2/2 = 1.

Input– N = 3, arr[] = {2, 2}

Output– 1.6667

Penjelasan – Kami mempunyai rentetan awal iaitu 111.

  • Dalam operasi pertama, kita boleh menyelak mana-mana 2 aksara. Jadi rentetan itu boleh menjadi 001, 100, 010.

  • Dalam operasi kedua, kita boleh menyelak 2 bit dalam rentetan yang terhasil daripada operasi pertama.

    • Apabila kita menyelak mana-mana dua bit 001, kita mendapat 111, 010 dan 100.

    • Apabila kita menyelak mana-mana 2 digit 100, kita boleh mendapat 010, 111 dan 001.

    • Apabila kita menyelak mana-mana dua bit 010, kita boleh mendapat 100, 001 dan 111.

Jadi, dalam operasi lepas, kami mendapat sejumlah 9 rentetan yang berbeza.

Jumlah set bilangan digit dalam 9 rentetan=15, jumlah bilangan operasi=9, answer=15/9=1.6667

Kaedah 1

Di sini, kami akan menggunakan prinsip kebarangkalian untuk menyelesaikan masalah ini. Katakan selepas menjalankan operasi i-1, nilai purata bit yang ditetapkan ialah p dan nilai purata bit yang tidak ditetapkan ialah q. Kita perlu mengira purata bit set dan bit tidak ditetapkan dalam operasi ke-i.

Jadi, nilai p yang dikemas kini boleh menjadi p + purata bilangan bit set baharu - purata bilangan bit baru.

Algoritma

  • Inisialisasikan P ke N kerana kita pada mulanya mempunyai bit set N, dan mulakan Q kepada 0 kerana kita pada mulanya mempunyai 0 set bit.

  • Lintas tatasusunan operasi.

  • Mulakan prev_p dan prev_q dengan nilai P dan Q.

  • Kemas kini nilai P menggunakan prev_p - prev_p * arr[i]/N + prev_q * arr[i]/N, yang akan menambah bit terbalik kepada bit set secara purata dan terbalikkan bit set secara purata kepada bit Unset

  • Kemas kini nilai Q.

  • Mengembalikan nilai P.

Terjemahan bahasa Cina bagi

Contoh

ialah:

Contoh

#include <bits/stdc++.h>
using namespace std;

double getAverageBits(int len, int K, int array[]) {
   // to store the average '1's in the binary string
   double P = len;
   // to store the average '0's in the binary string
   double Q = 0;
   // Traverse the array array[]
   for (int i = 0; i < K; i++) {
      // Initialize the prev_p and prev_q with P and Q, which we got from the previous iteration
      double prev_p = P, prev_q = Q;
      // Update the average '1's
      P = prev_p - prev_p * array[i] / len + prev_q * array[i] / len;
      // Update the average '0's
      Q = prev_q - prev_q * array[i] / len + prev_p * array[i] / len;
   }
   return P;
}
int main() {
   int N = 2;
   int array[] = {1};
   int K = sizeof(array) / sizeof(array[0]);
   cout << "The average number of set bits after performing the operations is " << getAverageBits(N, K, array);
   return 0;
}
Salin selepas log masuk

Output

The average number of set bits after performing the operations is 1
Salin selepas log masuk

Kerumitan masa - O(K), dengan K ialah panjang tatasusunan.

Kerumitan Ruang - O(1) kerana kami tidak menggunakan sebarang ruang tambahan.

Dalam tutorial ini kami belajar mencari bit set purata selepas melakukan semua pilihan operasi K yang mungkin. Dalam pemilihan tunggal kita perlu melaksanakan semua operasi yang diberikan dalam tatasusunan.

Atas ialah kandungan terperinci Purata bit yang ditetapkan dikira dalam rentetan binari yang diberikan selepas semua kemungkinan operasi K. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Urutan tidak bertambah terpanjang dalam rentetan binari Urutan tidak bertambah terpanjang dalam rentetan binari Sep 07, 2023 pm 11:13 PM

Dalam masalah ini, kita perlu mencari urutan tidak bertambah terpanjang bagi rentetan yang diberikan. Tidak bertambah bermakna aksara sama ada sama atau dalam susunan menurun. Memandangkan rentetan binari hanya mengandungi "0" dan "1", rentetan yang terhasil hendaklah sama ada bermula dengan "1" dan berakhir dengan "0", atau bermula dan berakhir dengan "0" atau "1". Untuk menyelesaikan masalah ini, kami akan mengira awalan "1" dan akhiran "0" pada setiap kedudukan rentetan dan mencari jumlah maksimum awalan "1" dan akhiran "0". Pernyataan Masalah - Kami diberi rentetan binari str. Kita perlu mencari urutan tidak bertambah terpanjang daripada rentetan yang diberikan. Contoh Input–str="010100"Output–4 menggambarkan bukan rekursif terpanjang

Dalam PHP, fungsi fungsi pack() adalah untuk menukar data kepada rentetan binari Dalam PHP, fungsi fungsi pack() adalah untuk menukar data kepada rentetan binari Aug 31, 2023 pm 02:05 PM

Fungsi pack() mengemas data ke dalam rentetan binari. Pek sintaks(format,args) Format parameter - format untuk digunakan. Berikut ialah nilai yang mungkin - a - rentetan berlapik NUL A - rentetan empuk ruang h - rentetan perenambelasan, nibble rendah dahulu H - rentetan perenambelasan, nibble tinggi dahulu c - char C yang ditandatangani - char s yang tidak ditandatangani - ditandatangani pendek (sentiasa 16 bit , pesanan bait mesin) S - pendek tidak ditandatangani (sentiasa 16 bit, susunan bait mesin) n - pendek tidak ditandatangani (sentiasa 16 bit, susunan bait endian besar) v - pendek tidak ditandatangani (sentiasa 16 bit, susunan bait endian kecil) i - integer bertanda (bergantung pada saiz mesin dan susunan bait) I - Tiada integer yang ditandatangani (bergantung pada

Ditulis dalam C++, cari bilangan pilih atur unik rentetan binari bermula dengan 1 Ditulis dalam C++, cari bilangan pilih atur unik rentetan binari bermula dengan 1 Sep 05, 2023 am 09:01 AM

Dalam masalah yang diberikan, kita diberi rentetan yang terdiri daripada 0 dan 1 kita perlu mencari jumlah bilangan semua pilih atur bermula dengan 1. Oleh kerana jawapannya mungkin jumlah yang besar, kami mengambilnya modulo 1000000007 dan mengeluarkannya. Input:str="10101001001"Output:210Input:str="101110011"Output:56 Kami akan menyelesaikan masalah ini dengan menggunakan beberapa matematik gabungan dan menyediakan beberapa formula. Kaedah Penyelesaian Dalam kaedah ini kita akan mengira bilangan 0 dan 1. Sekarang andaikan n ialah nombor 1 yang muncul dalam rentetan kami dan m ialah bilangan 0 yang muncul dalam rentetan kami

Menyemak sama ada rentetan boleh membentuk rentetan palindrom dengan menukar pasangan aksara pada indeks dengan aksara tidak sama dalam rentetan binari Menyemak sama ada rentetan boleh membentuk rentetan palindrom dengan menukar pasangan aksara pada indeks dengan aksara tidak sama dalam rentetan binari Sep 02, 2023 pm 08:09 PM

Pernyataan Masalah Kami mempunyai rentetan str dan rentetan binari B. Panjang kedua-dua rentetan adalah sama dengan N. Kita perlu menyemak sama ada kita boleh membuat rentetan str rentetan palindrom dengan menukar aksaranya beberapa kali pada mana-mana pasangan indeks yang mengandungi aksara tidak sama dalam rentetan B. Contoh Contoh Input str='AAS' B='101' Output 'YA' Terjemahan Cina bagi Penjelasan ialah: Penjelasan Kita boleh menukar str[1] dan str[2] kerana B[1] dan B[2] tidak sama . Rentetan akhir boleh menjadi 'ASA'. Input str=‘AASS’ B=‘1111’ dan keluaran ‘No’ Terjemahan Bahasa Cina bagi Explanation ialah: Penjelasan bahawa kita tidak boleh membuat string palindrom,

Cari pemain dengan bilangan sifar paling sedikit selepas mengosongkan rentetan binari (dengan mengalih keluar subrentetan bukan kosong) Cari pemain dengan bilangan sifar paling sedikit selepas mengosongkan rentetan binari (dengan mengalih keluar subrentetan bukan kosong) Sep 16, 2023 am 10:21 AM

Dalam artikel ini, kita akan membincangkan masalah menarik yang berkaitan dengan bidang manipulasi rentetan dan teori permainan: "Kosongkan rentetan binari dengan mengeluarkan subrentetan bukan kosong dan cari pemain dengan baki sifar paling sedikit". Soalan ini meneroka konsep menggunakan rentetan binari untuk permainan kompetitif. Matlamat kami adalah untuk mencari pemain dengan baki 0 ​​paling sedikit pada penghujung permainan. Kami akan membincangkan isu ini, menyediakan pelaksanaan kod C++, dan menerangkan konsep melalui contoh. Memahami penyataan masalah Dua pemain diberikan rentetan binari dan mereka bermain secara bergilir-gilir. Pada setiap giliran, pemain mengalih keluar subrentetan bukan kosong yang mengandungi sekurang-kurangnya satu "1". Permainan berakhir apabila rentetan menjadi kosong atau tiada "1" dalam rentetan. Pemain yang tidak dapat mengambil tindakan akan kehilangan permainan. Tugasnya adalah untuk mencari 0 akhir

Hitung rentetan perduaan panjang N yang merupakan gabungan berulang subrentetan Hitung rentetan perduaan panjang N yang merupakan gabungan berulang subrentetan Sep 07, 2023 am 10:13 AM

Tujuan artikel ini adalah untuk melaksanakan program untuk mengira bilangan rentetan binari panjang N yang dibentuk oleh penggabungan berulang subrentetan. Matlamatnya adalah untuk menentukan bilangan rentetan perduaan panjang N boleh dicipta dengan berulang kali menggabungkan subrentetan individu bagi teks yang diberikan, dengan N ialah integer positif. Pernyataan Masalah Laksanakan atur cara yang mengira bilangan rentetan binari panjang N yang menggabungkan subrentetan berulang kali. Contoh Contoh 1 Letus mengambil Input, N = 3 Output: 2 Terjemahan Cina bagi Penjelasan ialah: Penjelasan Berikut menyenaraikan rentetan binari yang boleh dilaksanakan dengan panjang N = 3, di mana subrentetan berulang kali digabungkan. "000":Thesubstr

Maksimumkan fungsi yang diberikan dengan memilih subrentetan panjang yang sama daripada rentetan binari yang diberikan Maksimumkan fungsi yang diberikan dengan memilih subrentetan panjang yang sama daripada rentetan binari yang diberikan Aug 28, 2023 am 09:49 AM

Memandangkan dua rentetan binari str1 dan str2 yang sama panjang, kita perlu memaksimumkan nilai fungsi yang diberikan dengan memilih subrentetan daripada rentetan yang diberikan dengan panjang yang sama. Fungsi yang diberikan adalah seperti ini - fun(str1,str2)=(len(substring))/(2^xor(sub1,sub2)). Di sini, len(substring) ialah panjang subrentetan pertama dan xor(sub1,sub2) ialah XOR substring yang diberikan, ini mungkin kerana ia adalah rentetan binari. Contoh Input1:stringstr1=10110&stringstr2=11101Output:3 menggambarkan kami

Bilangan pergerakan minimum yang diperlukan untuk meletakkan semua 0 sebelum 1 dalam rentetan binari Bilangan pergerakan minimum yang diperlukan untuk meletakkan semua 0 sebelum 1 dalam rentetan binari Sep 23, 2023 pm 01:29 PM

Pernyataan Masalah Kami diberikan str rentetan binari dan kami dikehendaki mengalih keluar aksara minimum daripada rentetan supaya kami boleh meletakkan semua sifar sebelum satu. Contoh input str=‘00110100111’ Output 3 Penerangan Di sini, kita boleh mencapai output 3 dalam dua cara. Kita boleh mengalih keluar arr[2], arr[3] dan arr[5] atau arr[4], arr[6] dan arr[7] daripada rentetan. Input str=‘001101011’ dan output 2 menunjukkan bahawa kita boleh memadamkan arr[4] dan arr[6] dan meletakkan semua sifar sebelum 1. Input str=‘000111’ Output 0 bermaksud bahawa dalam rentetan yang diberikan, semua sifar telah diletakkan sebelum 1, jadi kita tidak perlu bermula dari

See all articles