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; }
Ausgabe
Wenn wir den obigen Code ausführen, wird die folgende Ausgabe generiert
Subarrays satisfying only 1st condition : 4 Subarrays satisfying both condition : 3
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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

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,

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

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<

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

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

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

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
