Jadual Kandungan
Kaedah yang digunakan dalam atur cara berikut adalah seperti berikut -
Contoh
Output
Rumah pembangunan bahagian belakang C++ Dalam C++, maksimumkan bilangan subarray dengan sifar XOR

Dalam C++, maksimumkan bilangan subarray dengan sifar XOR

Aug 28, 2023 pm 09:05 PM
bawahan xor memaksimumkan

Dalam C++, maksimumkan bilangan subarray dengan sifar XOR

Kami mendapat array Arr[] yang mengandungi nilai integer. Matlamatnya adalah untuk mencari bilangan maksimum subarray yang XORnya ialah 0. Bit mana-mana subarray boleh ditukar beberapa kali.

Nota: - 118

Untuk menjadikan XOR mana-mana subarray kepada 0 dengan menukar bit, dua syarat mesti dipenuhi: -

  • Jika bilangan set bit dalam julat dari kiri ke kanan ialah nombor genap.
  • Untuk jumlah bit dalam mana-mana julat tertentu

Mari lihat pelbagai senario input dan output -

In −Arr[] = { 1,2,5,4 }

Subarray yang hanya memenuhi syarat pertama: 4

Subarray yang memenuhi kedua-dua syarat: 3

In

− Arr[] = { 3,7,2,9 }

itu hanya memenuhi syarat syarat pertama: 6

Subarray yang memenuhi kedua-dua syarat: 3

Kaedah yang digunakan dalam atur cara berikut adalah seperti berikut -

Dalam kaedah ini, kami perhatikan bahawa untuk membuat To XOR sebarang sub-array kepada 0 dengan menukar bit, dua syarat mesti dipenuhi:- Jika bilangan bit set dalam julat dari kiri ke kanan adalah genap atau untuk mana-mana julat tertentu jumlah bit

  • Dapatkan tatasusunan input Arr[ ] dan hitung panjangnya .

  • Fungsi removeSubarr(int arr[], int len) mengembalikan bilangan subarray yang tidak memenuhi syarat 2.

  • Tetapkan kiraan awal kepada 0.

  • Lelaran ke atas tatasusunan menggunakan gelung for dan ambil jumlah pembolehubah dan maxVal.

  • Gunakan gelung for yang lain untuk mengulang dalam julat 60 sub-tatasusunan, kerana melebihi 60 sub-tatasusunan, syarat 2 tidak akan pernah palsu.

  • Tambah elemen untuk dijumlahkan dan ambil nilai maksimum dalam maxVal.

  • Jika jumlah genap dan 2 * maxVal > jumlah, menambah kiraan sebagai syarat 2 tidak berpuas hati.

  • Kedua-dua gelung kembali dikira pada penghujung.

  • Fungsi findSubarrays(int arr1[], int len1) menerima tatasusunan input dan panjangnya, dan mengembalikan bilangan subarray yang memenuhi dua syarat di atas.

  • Ambil tatasusunan awalan untuk mengira bilangan subtatasusunan yang hanya memenuhi syarat 1.

  • Gunakan gelung for untuk lelaran melalui tatasusunan dan tetapkan setiap elemen __builtin_popcountll(arr1[i]) Ini ialah bilangan bit yang ditetapkan di dalamnya.

  • Gunakan gelung for untuk mengisi tatasusunan awalan dan tetapkan awalan[i] = awalan[i] + awalan [i - 1] kecuali elemen pertama.

  • Kira nilai ganjil dan genap dalam tatasusunan awalan.

  • Tetapkan tmp1 = ( oddcount * (oddcount-1) )/2 dan tmp2= ( Evencount * (evencount-1) )/2 dan ambil hasilnya sebagai jumlah kedua-duanya.

  • Hasilnya ialah jumlah subarray yang hanya memenuhi syarat 1.

  • Cetak hasilnya.

  • Sekarang kemas kini keputusan dengan result=result - removeSubarr( arr1, len1).

  • Kini hasilnya mengandungi subarray yang memenuhi kedua-dua syarat.

  • Cetak hasilnya semula.

Contoh

#include <bits/stdc++.h>
using namespace std;
// Function to count subarrays not satisfying condition 2
int removeSubarr(int arr[], int len){
   int count = 0;
   for (int i = 0; i < len; i++){
      int sum = 0;
      int maxVal = 0;

      for (int j = i; j < min(len, i + 60); j++){
         sum = sum + arr[j];
         maxVal = arr[j] > maxVal ? arr[j]: maxVal;

         if (sum % 2 == 0){
            if( 2 * maxVal > sum)
               { count++; }
         }
      }
   }
   return count;
}
int findSubarrays(int arr1[], int len1){
   int prefix[len1];
   int oddcount, evencount;
   int result;
   for (int i = 0; i < len1; i++)
   { arr1[i] = __builtin_popcountll(arr1[i]); }

   for (int i = 0; i < len1; i++){
      prefix[i] = arr1[i];
      if (i != 0)
         { prefix[i] = prefix[i] + prefix[i - 1]; }
      }
      oddcount = evencount = 0;
      for (int i = 0; i < len1; i++){
         if (prefix[i] % 2 == 0)
            { evencount = evencount +1; }
         else
            { oddcount = oddcount +1; }

      }
      evencount++;
      int tmp1= ( oddcount * (oddcount-1) )/2;
      int tmp2= ( evencount * (evencount-1) )/2;
      result = tmp1+tmp2;
      cout << "Subarrays satisfying only 1st condition : "<<result << endl;
      cout << "Subarrays satisfying both condition : ";
      result = result - removeSubarr(arr1, len1);
      return result;
   }
   int main()
   { int Arr[] = { 1,2,5,4 };
   int length = sizeof(Arr) / sizeof(Arr[0]);
   cout << findSubarrays(Arr, length);
   return 0;
}
Salin selepas log masuk

Output

Jika kita menjalankan kod di atas, ia akan menghasilkan output berikut

Subarrays satisfying only 1st condition : 4
Subarrays satisfying both condition : 3
Salin selepas log masuk

Atas ialah kandungan terperinci Dalam C++, maksimumkan bilangan subarray dengan sifar XOR. 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

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

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)

Di Jawa, cari jumlah subarray maksimum subarray selepas membahagikan tatasusunan kepada subarray berdasarkan pertanyaan yang diberikan Di Jawa, cari jumlah subarray maksimum subarray selepas membahagikan tatasusunan kepada subarray berdasarkan pertanyaan yang diberikan Aug 29, 2023 am 11:21 AM

Kami mempunyai dua tatasusunan integer, satu dengan elemen yang dikira dan satu lagi dengan titik pisah yang diperlukan untuk memisahkan tatasusunan untuk menghasilkan subset, kita perlu mengira jumlah setiap subset dalam setiap pecahan dan mengembalikan subset maksimum Mari kita lihat contoh Pemahaman: - input −intarr[]=intarr[]={9,4,5,6,7}intsplitPoints[]={0,2,3,1}; 13,9,9] Penjelasan − Di sini kita menguraikan tatasusunan mengikut titik pecahannya dan mendapatkan subset maksimum selepas setiap pecahan dan selepas pecahan pertama → {9} dan {4,5,6,7 }>>Jumlah maksimum subarray ialah -22 selepas pemisahan kedua→{9},{4

Tulis kod menggunakan C++ untuk mencari bilangan subarray dengan nilai minimum dan maksimum yang sama Tulis kod menggunakan C++ untuk mencari bilangan subarray dengan nilai minimum dan maksimum yang sama Aug 25, 2023 pm 11:33 PM

Dalam artikel ini, kami akan menggunakan C++ untuk menyelesaikan masalah mencari bilangan subarray yang nilai maksimum dan minimumnya adalah sama. Berikut ialah contoh masalah −Input:array={2,3,6,6,2,4,4,4}Output:12Penjelasan:{2},{3},{6},{6}, {2 },{4},{4},{4},{6,6},{4,4},{4,4}dan{4,4,4}arethesubarraysyang boleh dibentuk denganmaksimumdanminimumelemensama.Input:array={3, 3, 1,5,

Di Jawa, maksimumkan jumlah keuntungan semua orang X Di Jawa, maksimumkan jumlah keuntungan semua orang X Sep 20, 2023 pm 01:01 PM

Kami mempunyai 5 pembolehubah integer Num, P1, P2, profit_P1, profit_P2 dan tugasnya adalah untuk memaksimumkan keuntungan dan memilih daripada semua nombor asli dalam julat [1, Num]. Pendekatan di sini ialah jika nombor positif boleh dibahagikan dengan P1, keuntungan dinaikkan dengan keuntungan_P1, begitu juga, jika nombor dalam julat boleh dibahagikan dengan P2, keuntungan meningkat dengan keuntungan_P2. Tambahan pula, keuntungan daripada integer positif hanya boleh ditambah paling banyak sekali. Mari kita fahami melalui contoh: Input - intnum=4, P1=6, P2=2, profit_P1=8, profit_P2=2 - Maksimumkan jumlah keuntungan semua orang X4 Penjelasan - Julat nombor di sini ialah 1 hingga 4 ( [1, Nu

Ditulis dalam C++, cari bilangan subarray yang jumlahnya kurang daripada K Ditulis dalam C++, cari bilangan subarray yang jumlahnya kurang daripada K Sep 07, 2023 pm 03:25 PM

Dalam siaran ini, kita akan menemui bilangan subarray dengan jumlah kurang daripada K menggunakan C++. Dalam masalah ini, kita mempunyai array arr[] dan integer K. Sekarang kita perlu mencari subarray yang jumlahnya kurang daripada K. Berikut ialah contoh −Input:arr[]={1,11,2,3,15}K=10Output:4{1},{2},{3}dan{2,3} untuk mencari penyelesaian Sekarang kita Dua pendekatan yang berbeza akan digunakan untuk menyelesaikan masalah yang diberikan - kekerasan Dalam pendekatan ini kita akan mengulangi semua sub-tatasusunan dan mengira jumlahnya dan jika jumlahnya kurang daripada k kemudian bandingkan dengan k untuk meningkatkan Jawapan kita. Contoh#include<

Dalam C++, maksimumkan bilangan subarray dengan sifar XOR Dalam C++, maksimumkan bilangan subarray dengan sifar XOR Aug 28, 2023 pm 09:05 PM

Kami mendapat array Arr[] yang mengandungi nilai integer. Matlamatnya adalah untuk mencari bilangan maksimum subarray yang XORnya ialah 0. Bit mana-mana subarray boleh ditukar beberapa kali. Nota: -1

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

Subarray terpanjang yang pembahagi sepunya terbesar adalah lebih besar daripada 1 Subarray terpanjang yang pembahagi sepunya terbesar adalah lebih besar daripada 1 Sep 18, 2023 pm 10:17 PM

Tatasusunan ialah koleksi data serupa yang disimpan di lokasi memori bersebelahan dengan cara yang bersebelahan. Dengan mentakrifkan nilai offset sebagai nilai asas khusus untuk pangkalan data, lebih mudah untuk menilai kedudukan khusus setiap elemen. Nilai asas untuk indeks tertentu itu ialah sifar, dan nilai offset ialah perbezaan antara dua indeks tertentu. Subarray ialah sebahagian daripada tatasusunan tertentu dan boleh ditakrifkan sebagai satu set pembolehubah, dilabelkan dengan berbilang nilai. Subarray terpanjang merujuk kepada tatasusunan di mana semua elemen dalam tatasusunan lebih besar daripada K. Di sini jumlah subarray jumlah maksimum ialah - kurang daripada atau sama dengan set data yang diberikan dalam set data yang diberikan. Untuk mencari panjang subarray terpanjang yang diberikan kurang daripada 1 dalam set data, kita hanya perlu mencari jumlah nombor 1 dalam subarray tertentu. NOTA: Kiraan hendaklah lebih besar daripada kiraan sifar. Pembahagi sepunya terbesar ialah fenomena matematik di mana I

Tulis kod menggunakan C++ untuk mencari bilangan subarray dengan jumlah ganjil Tulis kod menggunakan C++ untuk mencari bilangan subarray dengan jumlah ganjil Sep 21, 2023 am 08:45 AM

Subarray ialah bahagian bersebelahan daripada tatasusunan. Sebagai contoh, kami mempertimbangkan tatasusunan [5,6,7,8], maka terdapat sepuluh subarray bukan kosong, seperti (5), (6), (7), (8), (5,6), (6, 7), (7,8), (5,6,7), (6,7,8) dan (5,6,7,8). Dalam panduan ini, kami akan menerangkan semua maklumat yang mungkin dalam C++ untuk mencari bilangan subarray dengan jumlah ganjil. Untuk mencari bilangan subarray bagi jumlah ganjil kita boleh menggunakan kaedah yang berbeza, jadi berikut ialah contoh mudah - Input:array={9,8,7,6,5}Output:9Penjelasan:Sumofsubarray-{9}= 9{7

See all articles