Table des matières
La méthode utilisée dans le programme suivant est la suivante -
Exemple
Output
Maison développement back-end C++ En C++, maximiser le nombre de sous-tableaux avec zéro XOR

En C++, maximiser le nombre de sous-tableaux avec zéro XOR

Aug 28, 2023 pm 09:05 PM
sous-tableau xor maximiser

En C++, maximiser le nombre de sous-tableaux avec zéro XOR

Nous obtenons un tableau Arr[] contenant des valeurs entières. Le but est de trouver le nombre maximum de sous-tableaux dont le XOR est 0. Les bits de n'importe quel sous-tableau peuvent être échangés un nombre illimité de fois.

Remarque : - 118

Afin de rendre le XOR de n'importe quel sous-tableau à 0 en échangeant des bits, deux conditions doivent être remplies : -

  • Si le nombre de bits définis est compris entre gauche et droite est un nombre pair.
  • Pour la somme de bits dans une plage donnée

Examinons différents scénarios d'entrée et de sortie -

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

Out

Sous-tableau qui ne satisfait qu'à la première condition : 4

Sous-tableau qui satisfait aux deux conditions : 3

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

Out

Sous-tableau qui ne satisfait qu'à la première condition : 6

Sous-tableau qui satisfait les deux conditions : 3

La méthode utilisée dans le programme suivant est la suivante -

Dans cette méthode, nous observons que pour faire To XOR n'importe quel sous-tableau à 0 en échangeant les bits, deux conditions doivent être remplies : - Si le nombre de bits définis dans la plage de gauche à droite est pair ou pour une plage donnée, la somme des bits

  • Obtenez le tableau d'entrée Arr[ ] et calculez sa longueur .

  • La fonction removeSubarr(int arr[], int len) renvoie le nombre de sous-tableaux qui ne remplissent pas la condition 2.

  • Réglez le décompte initial sur 0.

  • Parcourez le tableau à l'aide d'une boucle for et prenez les variables sum et maxVal.

  • Utilisez une autre boucle for pour parcourir la plage de 60 sous-tableaux, car au-delà de 60 sous-tableaux, la condition 2 ne sera jamais fausse.

  • Ajoutez des éléments à additionner et prenez la valeur maximale dans maxVal.

  • Si la somme est paire et 2 * maxVal > sum, incrémenter le décompte car la condition 2 n'est pas satisfaite.

  • Les deux retours comptent à la fin des deux boucles.

  • La fonction findSubarrays(int arr1[], int len1) accepte un tableau d'entrée et sa longueur, et renvoie le nombre de sous-tableaux qui remplissent les deux conditions ci-dessus.

  • Prenez un tableau de préfixes pour compter le nombre de sous-tableaux qui ne satisfont que la condition 1.

  • Utilisez une boucle for pour parcourir le tableau et définir chaque élément __builtin_popcountll(arr1[i]) C'est le nombre de bits définis.

  • Utilisez une boucle for pour remplir le tableau de préfixes et définissez préfixe[i] = préfixe[i] + préfixe [i - 1] sauf pour le premier élément.

  • Comptez les valeurs paires et impaires dans le tableau de préfixes.

  • Définissez tmp1 = ( oddcount * (oddcount-1) )/2 et tmp2= ( Evencount * (evencount-1) )/2 et prenez le résultat comme la somme des deux.

  • Le résultat sera la somme des sous-tableaux qui satisfont uniquement à la condition 1.

  • Imprimez les résultats.

  • Maintenant, mettez à jour le résultat avec result=result - removeSubarr( arr1, len1).

  • Maintenant, le résultat contient des sous-tableaux qui satisfont aux deux conditions.

  • Imprimez à nouveau les résultats.

Exemple

#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;
}
Copier après la connexion

Output

Si nous exécutons le code ci-dessus, il générera la sortie suivante

Subarrays satisfying only 1st condition : 4
Subarrays satisfying both condition : 3
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

En Java, recherchez la somme maximale des sous-tableaux après avoir divisé un tableau en sous-tableaux en fonction d'une requête donnée. En Java, recherchez la somme maximale des sous-tableaux après avoir divisé un tableau en sous-tableaux en fonction d'une requête donnée. Aug 29, 2023 am 11:21 AM

Nous avons deux tableaux d'entiers, l'un avec les éléments calculés et l'autre avec les points de division nécessaires pour diviser le tableau afin de générer des sous-ensembles, nous devons calculer la somme de chaque sous-ensemble dans chaque division et renvoyer le sous-ensemble maximum. Passons en revue l'exemple Comprendre : - input −intarr[]=intarr[]={9,4,5,6,7}intsplitPoints[]={0,2,3,1} ; sortie−la somme maximale du sous-tableau après chaque division [ 22, 13,9,9] Explication - Ici, nous décomposons le tableau en fonction de ses points de division et obtenons le sous-ensemble maximum après chaque division et après la première division → {9} et {4,5,6,7 }>> La somme maximale des sous-tableaux est de -22 après la deuxième division →{9},{4

Écrivez un code en C++ pour trouver le nombre de sous-tableaux avec les mêmes valeurs minimales et maximales Écrivez un code en C++ pour trouver le nombre de sous-tableaux avec les mêmes valeurs minimales et maximales Aug 25, 2023 pm 11:33 PM

Dans cet article, nous utiliserons C++ pour résoudre le problème de trouver le nombre de sous-tableaux dont les valeurs maximales et minimales sont les mêmes. Voici un exemple du problème −Input:array={2,3,6,6,2,4,4,4}Output:12Explication :{2},{3},{6},{6}, {2 },{4},{4},{4},{6,6},{4,4},{4,4}et{4,4,4}sont les sous-tableaux qui peuvent être formés avec les mêmes éléments maximum et minimum. Entrée : tableau = {3, 3, 1,5,

En Java, maximiser le profit total de tous X En Java, maximiser le profit total de tous X Sep 20, 2023 pm 01:01 PM

Nous avons 5 variables entières Num, P1, P2, profit_P1, profit_P2 et la tâche est de maximiser le profit et de choisir parmi tous les nombres naturels dans la plage [1, Num]. L'approche ici est que si un nombre positif est divisible par P1, le profit est augmenté de profit_P1, de même, si un nombre de la plage est divisible par P2, le profit est augmenté de profit_P2. De plus, les bénéfices des entiers positifs ne peuvent être ajoutés qu’une seule fois. Comprenons à travers des exemples : Entrée - intnum=4, P1=6, P2=2, profit_P1=8, profit_P2=2 ; Sortie - Maximiser le profit total de toutes les personnes X4 Explication - La plage de nombres ici est de 1 à 4 ( [1, Nu

Écrit en C++, trouvez le nombre de sous-tableaux dont la somme est inférieure à K Écrit en C++, trouvez le nombre de sous-tableaux dont la somme est inférieure à K Sep 07, 2023 pm 03:25 PM

Dans cet article, nous trouverons le nombre de sous-tableaux dont la somme est inférieure à K en utilisant C++. Dans ce problème, nous avons un tableau arr[] et un entier K. Nous devons maintenant trouver les sous-tableaux dont la somme est inférieure à K. Voici l'exemple −Input:arr[]={1,11,2,3,15}K=10Output:4{1},{2},{3}and{2,3} pour trouver la solution. Maintenant, nous Deux approches différentes seront utilisées pour résoudre le problème donné : la force brute. Dans cette approche, nous allons parcourir tous les sous-tableaux et calculer leur somme et si la somme est inférieure à k, comparer avec k pour augmenter notre réponse. Exemple#include<

En C++, maximiser le nombre de sous-tableaux avec zéro XOR En C++, maximiser le nombre de sous-tableaux avec zéro XOR Aug 28, 2023 pm 09:05 PM

Nous obtenons un tableau Arr[] contenant des valeurs entières. Le but est de trouver le nombre maximum de sous-tableaux dont le XOR est 0. Les bits de n'importe quel sous-tableau peuvent être échangés un nombre illimité de fois. Remarque : -1

Maximisez la fonction donnée en sélectionnant des sous-chaînes de longueur égale à partir de la chaîne binaire donnée Maximisez la fonction donnée en sélectionnant des sous-chaînes de longueur égale à partir de la chaîne binaire donnée Aug 28, 2023 am 09:49 AM

Étant donné deux chaînes binaires str1 et str2 de même longueur, nous devons maximiser la valeur de fonction donnée en sélectionnant des sous-chaînes parmi les chaînes données de même longueur. La fonction donnée est comme ceci - fun(str1,str2)=(len(substring))/(2^xor(sub1,sub2)). Ici, len(substring) est la longueur de la première sous-chaîne et xor(sub1,sub2) est le XOR de la sous-chaîne donnée, cela est possible puisqu'il s'agit de chaînes binaires. L'exemple Input1:stringstr1=10110&stringstr2=11101Output:3 illustre notre

Le sous-tableau le plus long dont le plus grand diviseur commun est supérieur à 1 Le sous-tableau le plus long dont le plus grand diviseur commun est supérieur à 1 Sep 18, 2023 pm 10:17 PM

Un tableau est une collection de données similaires stockées dans des emplacements mémoire adjacents de manière contiguë. En définissant la valeur de décalage comme valeur de base spécifique pour la base de données, il est plus facile d'évaluer la position spécifique de chaque élément. La valeur de base de cet index particulier est zéro et la valeur de décalage est la différence entre les deux indices particuliers. Un sous-tableau fait partie d'un tableau spécifique et peut être défini comme un ensemble de variables, étiquetées avec plusieurs valeurs. Le sous-tableau le plus long fait référence à un tableau dans lequel tous les éléments du tableau sont supérieurs à K. Ici, la somme du sous-tableau de somme maximale est inférieure ou égale à l'ensemble de données donné dans l'ensemble de données donné. Pour trouver la longueur du sous-tableau le plus long étant inférieur à 1 dans un ensemble de données, il nous suffit de trouver le nombre total de 1 dans un sous-tableau particulier. REMARQUE : Le nombre doit être supérieur au nombre de zéro. Le plus grand diviseur commun est un phénomène mathématique dans lequel je

Écrivez un code en C++ pour trouver le nombre de sous-tableaux avec des sommes impaires Écrivez un code en C++ pour trouver le nombre de sous-tableaux avec des sommes impaires Sep 21, 2023 am 08:45 AM

Un sous-tableau est une partie contiguë d'un tableau. Par exemple, nous considérons un tableau [5,6,7,8], alors il y a dix sous-tableaux non vides, tels que (5), (6), (7), (8), (5,6), (6, 7), (7,8), (5,6,7), (6,7,8) et (5,6,7,8). Dans ce guide, nous expliquerons toutes les informations possibles en C++ pour trouver le nombre de sous-tableaux avec des sommes impaires. Pour trouver le nombre de sous-tableaux de sommes impaires, nous pouvons utiliser différentes méthodes, voici donc un exemple simple - Input:array={9,8,7,6,5}Output:9Explanation:Sumofsubarray-{9}= 9{7

See all articles