


La moyenne du nombre de bits définis dans une chaîne binaire donnée après toutes les K opérations possibles
Dans ce problème, nous devons trouver la moyenne du nombre de bits défini après avoir effectué toutes les opérations K sélectionnées sur la chaîne donnée.
Les méthodes de force brute peuvent être utilisées pour résoudre le problème, mais nous utiliserons des principes de probabilité pour surmonter la complexité temporelle des méthodes de force brute.
Énoncé du problème - On nous donne un entier N, un tableau arr[] contenant K entiers positifs et une chaîne binaire de longueur N contenant uniquement des bits définis. Nous devons trouver la moyenne du nombre de bits défini après avoir effectué toutes les K opérations possibles. Dans la ième opération, nous pouvons inverser n’importe quel bit arr[i] dans la chaîne donnée.
Exemple
Entrée– N = 2, arr[] = {1, 2}
Sortie– 1
Description – La chaîne binaire initiale est 11.
Dans la première étape, nous pouvons retourner le premier caractère et la chaîne sera 01.
Dans la deuxième opération, nous devons retourner deux bits quelconques. La chaîne deviendra donc 10.
La deuxième sélection peut commencer en retournant le deuxième caractère de la première étape et la chaîne sera 10.
Dans la deuxième étape de l'opération en cours, nous devons inverser 2 bits, la chaîne peut être 01.
Nous avons donc deux choix, la chaîne finale peut être 01 ou 10.
Total des sélections = 2, total des bits définis dans la chaîne finale = 2, ans = 2/2 = 1.
Entrée– N = 3, arr[] = {2, 2}
Sortie– 1,6667
Explication – Nous avons une chaîne initiale qui est 111.
Dans la première opération, nous pouvons retourner 2 personnages quelconques. La chaîne pourrait donc être 001, 100, 010.
Dans la deuxième opération, nous pouvons inverser 2 bits dans la chaîne résultante de la première opération.
Lorsque nous retournons deux bits de 001, nous obtenons 111, 010 et 100.
Lorsque nous retournons 2 chiffres de 100, nous pouvons obtenir 010, 111 et 001.
Lorsque nous retournons deux bits de 010, nous pouvons obtenir 100, 001 et 111.
Donc, lors de la dernière opération, nous avons obtenu un total de 9 chaînes différentes.
Nombre total de chiffres dans 9 chaînes = 15, nombre total d'opérations = 9, réponse = 15/9 = 1,6667
Méthode 1
Ici, nous utiliserons le principe de probabilité pour résoudre ce problème. Supposons qu'après avoir effectué i-1 opérations, la valeur moyenne des bits définis est p et la valeur moyenne des bits non définis est q. Nous devons calculer la moyenne des bits activés et non activés dans la ième opération.
Ainsi, la valeur mise à jour de p peut être p + le nombre moyen de nouveaux bits définis - le nombre moyen de nouveaux bits désactivés.
Algorithme
Initialisez P à N car nous avons initialement N bits définis, et initialisons Q à 0 car nous avons initialement 0 bits définis.
Traversez le tableau d'opérations.
Initialisez prev_p et prev_q avec les valeurs P et Q.
-
Mettez à jour la valeur P en utilisant prev_p - prev_p * arr[i]/N + prev_q * arr[i]/N, ce qui ajoutera les bits inversés aux bits définis en moyenne et inversera les bits définis en moyenne en bits non définis
Mettre à jour la valeur Q.
Renvoie la valeur P.
Exemple
est :Exemple
#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; }
Sortie
The average number of set bits after performing the operations is 1
Complexité temporelle - O(K), où K est la longueur du tableau.
Complexité spatiale - O(1) puisque nous n'utilisons aucun espace supplémentaire.
Dans ce tutoriel, nous avons appris à trouver le bit moyen après avoir effectué tous les choix possibles d'opérations K. En sélection unique, nous devons effectuer toutes les opérations données dans le tableau.
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Dans ce problème, nous devons trouver la sous-séquence non croissante la plus longue d’une chaîne donnée. Non croissant signifie que les caractères sont identiques ou classés par ordre décroissant. Étant donné que les chaînes binaires ne contiennent que « 0 » et « 1 », la chaîne résultante doit soit commencer par « 1 » et se terminer par « 0 », soit commencer et se terminer par « 0 » ou « 1 ». Pour résoudre ce problème, nous allons compter le préfixe « 1 » et le suffixe « 0 » à chaque position de la chaîne et trouver la somme maximale du préfixe « 1 » et du suffixe « 0 ». Énoncé du problème - On nous donne une chaîne binaire str. Nous devons trouver la sous-séquence non croissante la plus longue de la chaîne donnée. Exemple Input–str="010100"Output–4 illustre le plus long fichier non récursif

Dans le problème donné, on nous donne une chaîne composée de 0 et 1 ; nous devons trouver le nombre total de toutes les permutations commençant par 1. Puisque la réponse peut être un nombre énorme, nous la prenons modulo 1000000007 et la produisons. Input:str="10101001001"Output:210Input:str="101110011"Output:56 Nous allons résoudre ce problème en appliquant des mathématiques combinatoires et en mettant en place des formules. Méthode de solution Dans cette méthode, nous compterons le nombre de 0 et de 1. Supposons maintenant que n soit le nombre de 1 qui apparaissent dans notre chaîne et que m soit le nombre de 0 qui apparaissent dans notre chaîne.

La fonction pack() regroupe les données dans une chaîne binaire. Syntaxe pack(format,args) Format des paramètres - le format à utiliser. Voici les valeurs possibles - a - chaîne remplie NUL A - chaîne remplie d'espaces h - chaîne hexadécimale, petit quartet en premier H - chaîne hexadécimale, haut quartet en premier c - caractère signé C - caractère non signé s - court signé (toujours 16 bits , ordre des octets machine) S - court non signé (toujours 16 bits, ordre des octets machine) n - court non signé (toujours 16 bits, ordre des octets big endian) v - court non signé (toujours 16 bits, ordre des octets small endian) i - entier signé (dépend de la taille de la machine et de l'ordre des octets) I - Aucun entier signé (en fonction de

Énoncé du problème Nous avons une chaîne str et une chaîne binaire B. La longueur des deux chaînes est égale à N. Nous devons vérifier si nous pouvons faire de la chaîne str une chaîne palindrome en échangeant ses caractères plusieurs fois sur n'importe quelle paire d'index contenant des caractères inégaux dans la chaîne B. Exemple Exemple Entrée str='AAS' B='101' Sortie 'YES' La traduction chinoise de Explication est : Explication Nous pouvons échanger str[1] et str[2] car B[1] et B[2] ne sont pas égaux . La chaîne finale peut être « ASA ». Entrée str='AASS' B='1111' et sortie 'No'. La traduction chinoise de l'explication est : Explication que nous ne pouvons pas créer le palindrome de chaîne,

Le but de cet article est d'implémenter un programme permettant de compter le nombre de chaînes binaires de longueur N formées par concaténation répétée d'une sous-chaîne. L'objectif est de déterminer combien de chaînes binaires de longueur N peuvent être créées en concaténant de manière répétée des sous-chaînes individuelles du texte donné, où N est un entier positif. Énoncé du problème Implémentez un programme qui compte le nombre de chaînes binaires de longueur N qui concatènent à plusieurs reprises des sous-chaînes. Exemple Exemple 1 Prenons l'entrée, N = 3 Sortie : 2 La traduction chinoise de l'explication est : Explication La liste suivante répertorie les chaînes binaires réalisables de longueur N = 3, dans lesquelles une sous-chaîne est concaténée de manière répétée. "000":Lasubstr

Dans cet article, nous aborderons un problème intéressant lié au domaine de la manipulation de chaînes et de la théorie des jeux : "Vider une chaîne binaire en supprimant les sous-chaînes non vides et trouver le joueur avec le moins de zéros restants". Cette question explore le concept d'utilisation de chaînes binaires pour les jeux compétitifs. Notre objectif est de trouver le joueur avec le moins de 0 restant à la fin de la partie. Nous discuterons de ce problème, fournirons une implémentation de code C++ et expliquerons le concept à travers un exemple. Comprendre l'énoncé du problème Deux joueurs reçoivent une chaîne binaire et jouent à tour de rôle. A chaque tour, le joueur supprime les sous-chaînes non vides contenant au moins un "1". Le jeu se termine lorsque la chaîne devient vide ou qu'il n'y a pas de "1" dans la chaîne. Les joueurs incapables d’agir perdent la partie. La tâche est de trouver le 0 final

É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

Énoncé du problème Nous recevons une chaîne binaire str et nous devons supprimer le minimum de caractères de la chaîne afin de pouvoir placer tous les zéros avant les uns. Exemple d'entrée str='00110100111' Sortie 3 Description Ici, nous pouvons obtenir la sortie 3 de deux manières. Nous pouvons supprimer arr[2], arr[3] et arr[5] ou arr[4], arr[6] et arr[7] de la chaîne. L'entrée str='001101011' et la sortie 2 montrent que nous pouvons supprimer arr[4] et arr[6] et mettre tous les zéros avant 1. Entrée str='000111' La sortie 0 signifie que dans la chaîne donnée, tous les zéros ont été placés avant 1, nous n'avons donc pas besoin de commencer par
