Inhaltsverzeichnis
Die im folgenden Programm verwendete Methode ist wie folgt -
Beispiel
Ausgabe
Heim Backend-Entwicklung C++ Maximieren Sie in C++ die Anzahl der Subarrays mit null XOR

Maximieren Sie in C++ die Anzahl der Subarrays mit null XOR

Aug 28, 2023 pm 09:05 PM
子数组 xor 最大化

Maximieren Sie in C++ die Anzahl der Subarrays mit null XOR

Wir erhalten ein Array Arr[] mit ganzzahligen Werten. Das Ziel besteht darin, die maximale Anzahl von Subarrays zu finden, deren XOR 0 ist. Die Bits eines Subarrays können beliebig oft ausgetauscht werden.

Hinweis: - 118

Um das XOR eines beliebigen Subarrays durch Vertauschen von Bits auf 0 zu setzen, müssen zwei Bedingungen erfüllt sein: -

  • Wenn die Anzahl der gesetzten Bits im Bereich von links nach rechts liegt ist eine gerade Zahl.
  • Für die Summe der Bits in einem bestimmten Bereich

Schauen wir uns verschiedene Eingabe- und Ausgabeszenarien an –

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

Out

Subarray, das nur die erste Bedingung erfüllt: 4

Subarray, das beide Bedingungen erfüllt: 3

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

Out

Subarray, das erfüllt nur die erste Bedingung Bedingung: 6

Subarray, das beide Bedingungen erfüllt: 3

Die im folgenden Programm verwendete Methode ist wie folgt -

Bei dieser Methode beobachten wir, dass jedes Unterarray mit XOR verknüpft werden muss 0 durch Vertauschen von Bits, müssen zwei Bedingungen erfüllt sein: – Wenn die Anzahl der gesetzten Bits im Bereich von links nach rechts gerade ist oder für einen bestimmten Bereich die Summe der Bits

  • Holen Sie sich das Eingabearray Arr[ ] und berechnen Sie seine Länge .

  • Die Funktion removeSubarr(int arr[], int len) gibt die Anzahl der Subarrays zurück, die Bedingung 2 nicht erfüllen.

  • Setzen Sie den Anfangszähler auf 0.

  • Iterieren Sie mit einer for-Schleife über das Array und nehmen Sie die Variablen sum und maxVal.

  • Verwenden Sie eine weitere for-Schleife, um über den Bereich von 60 Unterarrays zu iterieren, denn jenseits von 60 Unterarrays wird Bedingung 2 niemals falsch sein.

  • Füge Elemente zur Summe hinzu und nimm den Maximalwert in maxVal.

  • Wenn die Summe gerade ist und 2 * maxVal > Summe, ist das Erhöhen der Anzahl als Bedingung 2 nicht erfüllt.

  • Beide Schleifen geben am Ende den Zählerstand zurück.

  • Die Funktion findSubarrays(int arr1[], int len1) akzeptiert ein Eingabearray und seine Länge und gibt die Anzahl der Unterarrays zurück, die die beiden oben genannten Bedingungen erfüllen.

  • Nehmen Sie ein Präfix-Array, um die Anzahl der Unterarrays zu zählen, die nur Bedingung 1 erfüllen.

  • Verwenden Sie eine for-Schleife, um das Array zu durchlaufen und jedes Element festzulegen __builtin_popcountll(arr1[i]) Dies ist die Anzahl der darin gesetzten Bits.

  • Verwenden Sie eine for-Schleife, um das Präfix-Array zu füllen und setzen Sie prefix[i] = prefix[i] + prefix [i - 1] mit Ausnahme des ersten Elements.

  • Zählen Sie ungerade und gerade Werte im Präfix-Array.

  • Setzen Sie tmp1 = ( oddcount * (oddcount-1) )/2 und tmp2= ( Evencount * (evencount-1) )/2 und nehmen Sie das Ergebnis als Summe der beiden.

  • Das Ergebnis ist die Summe der Subarrays, die nur Bedingung 1 erfüllen.

  • Drucken Sie die Ergebnisse aus.

  • Aktualisieren Sie nun das Ergebnis mit result=result - removeSubarr( arr1, len1).

  • Das Ergebnis enthält nun Subarrays, die beide Bedingungen erfüllen.

  • Drucken Sie die Ergebnisse noch einmal aus.

Beispiel

#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;
}
Nach dem Login kopieren

Ausgabe

Wenn wir den obigen Code ausführen, wird die folgende Ausgabe generiert

Subarrays satisfying only 1st condition : 4
Subarrays satisfying both condition : 3
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonMaximieren Sie in C++ die Anzahl der Subarrays mit null XOR. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Ermitteln Sie in Java die maximale Subarray-Summe von Subarrays, nachdem Sie ein Array basierend auf einer bestimmten Abfrage in Subarrays aufgeteilt haben Ermitteln Sie in Java die maximale Subarray-Summe von Subarrays, nachdem Sie ein Array basierend auf einer bestimmten Abfrage in Subarrays aufgeteilt haben Aug 29, 2023 am 11:21 AM

Wir haben zwei Arrays von Ganzzahlen, eines mit den berechneten Elementen und das andere mit den Teilungspunkten, die zum Teilen des Arrays zur Generierung von Teilmengen erforderlich sind. Wir müssen die Summe jeder Teilmenge in jeder Teilung berechnen und die maximale Teilmenge zurückgeben. Gehen wir das Beispiel durch Verstehen: - Eingabe −intarr[]=intarr[]={9,4,5,6,7}intsplitPoints[]={0,2,3,1} Ausgabe−die maximale Subarray-Summe nach jeder Teilung [ 22, 13,9,9] Erläuterung − Hier zerlegen wir das Array nach seinen Teilungspunkten und erhalten die maximale Teilmenge nach jeder Teilung und nach der ersten Teilung → {9} und {4,5,6,7 }>>Die maximale Summe der Subarrays beträgt nach der zweiten Aufteilung -22→{9},{4

Schreiben Sie mit C++ einen Code, um die Anzahl der Subarrays mit denselben Mindest- und Höchstwerten zu ermitteln Schreiben Sie mit C++ einen Code, um die Anzahl der Subarrays mit denselben Mindest- und Höchstwerten zu ermitteln Aug 25, 2023 pm 11:33 PM

In diesem Artikel werden wir C++ verwenden, um das Problem zu lösen, die Anzahl der Subarrays zu ermitteln, deren Maximal- und Minimalwert gleich sind. Das Folgende ist ein Beispiel für das Problem: −Input:array={2,3,6,6,2,4,4,4}Output:12Explanation:{2},{3},{6},{6}, {2 },{4},{4},{4},{6,6},{4,4},{4,4}und {4,4,4}sind die Teilarrays, die mit dem gleichen maximalen und minimalen Element gebildet werden können. Eingabe: array={3, 3, 1,5,

Maximieren Sie in Java den Gesamtgewinn aller Menschen X Maximieren Sie in Java den Gesamtgewinn aller Menschen X Sep 20, 2023 pm 01:01 PM

Wir haben 5 ganzzahlige Variablen Num, P1, P2, profit_P1, profit_P2 und die Aufgabe besteht darin, den Gewinn zu maximieren und aus allen natürlichen Zahlen im Bereich [1, Num] auszuwählen. Der Ansatz hier ist, dass, wenn eine positive Zahl durch P1 teilbar ist, der Gewinn um Gewinn_P1 erhöht wird. Wenn eine Zahl im Bereich durch P2 teilbar ist, erhöht sich der Gewinn um Gewinn_P2. Darüber hinaus können Gewinne aus positiven ganzen Zahlen höchstens einmal addiert werden. Lassen Sie uns anhand von Beispielen verstehen: Eingabe – intnum=4, P1=6, P2=2, profit_P1=8, profit_P2=2; Ausgabe – Maximieren Sie den Gesamtgewinn aller Personen. X4 Erklärung – Der Zahlenbereich liegt hier zwischen 1 und 4 ( [1, Nu

Ermitteln Sie in C++ die Anzahl der Subarrays, deren Summe kleiner als K ist Ermitteln Sie in C++ die Anzahl der Subarrays, deren Summe kleiner als K ist Sep 07, 2023 pm 03:25 PM

In diesem Beitrag werden wir C++ verwenden, um die Anzahl der Subarrays zu ermitteln, deren Summe kleiner als K ist. In diesem Problem haben wir ein Array arr[] und eine Ganzzahl K. Jetzt müssen wir die Subarrays finden, deren Summe kleiner als K ist. Hier ist das Beispiel −Input:arr[]={1,11,2,3,15}K=10Output:4{1},{2},{3}and{2,3}, um die Lösung zu finden. Jetzt haben wir Zur Lösung des gegebenen Problems werden zwei verschiedene Ansätze verwendet: Brute Force. Bei diesem Ansatz durchlaufen wir alle Unterarrays und berechnen deren Summe. Wenn die Summe kleiner als k ist, vergleichen wir sie mit k, um unsere Antwort zu erhöhen. Beispiel#include<

Maximieren Sie in C++ die Anzahl der Subarrays mit null XOR Maximieren Sie in C++ die Anzahl der Subarrays mit null XOR Aug 28, 2023 pm 09:05 PM

Wir erhalten ein Array Arr[] mit ganzzahligen Werten. Das Ziel besteht darin, die maximale Anzahl von Subarrays zu finden, deren XOR 0 ist. Die Bits eines Subarrays können beliebig oft ausgetauscht werden. Hinweis: -1

Maximieren Sie die angegebene Funktion, indem Sie Teilzeichenfolgen gleicher Länge aus der angegebenen Binärzeichenfolge auswählen Maximieren Sie die angegebene Funktion, indem Sie Teilzeichenfolgen gleicher Länge aus der angegebenen Binärzeichenfolge auswählen Aug 28, 2023 am 09:49 AM

Bei zwei Binärzeichenfolgen str1 und str2 gleicher Länge müssen wir den gegebenen Funktionswert maximieren, indem wir Teilzeichenfolgen aus den gegebenen Zeichenketten gleicher Länge auswählen. Die angegebene Funktion sieht folgendermaßen aus: fun(str1,str2)=(len(substring))/(2^xor(sub1,sub2)). Hier ist len(substring) die Länge des ersten Teilstrings und xor(sub1,sub2) das XOR des gegebenen Teilstrings. Dies ist möglich, da es sich um binäre Strings handelt. Beispiel Input1:stringstr1=10110&stringstr2=11101Output:3 veranschaulicht unsere

Schreiben Sie mit C++ einen Code, um die Anzahl der Unterarrays mit ungeraden Summen zu ermitteln Schreiben Sie mit C++ einen Code, um die Anzahl der Unterarrays mit ungeraden Summen zu ermitteln Sep 21, 2023 am 08:45 AM

Ein Subarray ist ein zusammenhängender Teil eines Arrays. Betrachten wir beispielsweise ein Array [5,6,7,8], dann gibt es zehn nicht leere Unterarrays, wie zum Beispiel (5), (6), (7), (8), (5,6). (6, 7), (7,8), (5,6,7), (6,7,8) und (5,6,7,8). In diesem Leitfaden erklären wir alle möglichen Informationen in C++, um die Anzahl der Subarrays mit ungeraden Summen zu ermitteln. Um die Anzahl der Unterarrays ungerader Summen zu ermitteln, können wir verschiedene Methoden verwenden. Hier ist ein einfaches Beispiel: Input:array={9,8,7,6,5}Output:9Explanation:Sumofsubarray-{9}= 9{7

Das längste Subarray, dessen größter gemeinsamer Teiler größer als 1 ist Das längste Subarray, dessen größter gemeinsamer Teiler größer als 1 ist Sep 18, 2023 pm 10:17 PM

Ein Array ist eine Sammlung ähnlicher Daten, die zusammenhängend an benachbarten Speicherorten gespeichert sind. Durch die Definition des Offset-Werts als spezifischer Basiswert für die Datenbank ist es einfacher, die spezifische Position jedes Elements zu bewerten. Der Basiswert für diesen bestimmten Index ist Null und der Offsetwert ist die Differenz zwischen den beiden bestimmten Indizes. Ein Subarray ist Teil eines bestimmten Arrays und kann als eine Reihe von Variablen definiert werden, die mit mehreren Werten gekennzeichnet sind. Das längste Subarray bezieht sich auf ein Array, in dem alle Elemente im Array größer als K sind. Hier ist die Summe der maximalen Summe des Subarrays kleiner oder gleich dem angegebenen Datensatz im angegebenen Datensatz. Um die Länge des längsten Subarrays mit weniger als 1 in einem Datensatz zu ermitteln, müssen wir lediglich die Gesamtzahl der Einsen in einem bestimmten Subarray ermitteln. HINWEIS: Die Anzahl sollte größer als die Anzahl Null sein. Der größte gemeinsame Teiler ist ein mathematisches Phänomen, bei dem ich

See all articles