Table des matières
Exemple
Méthode 1
Algorithme
Sortie
Maison développement back-end C++ La moyenne du nombre de bits définis dans une chaîne binaire donnée après toutes les K opérations possibles

La moyenne du nombre de bits définis dans une chaîne binaire donnée après toutes les K opérations possibles

Aug 25, 2023 pm 12:29 PM
chaîne binaire k opérations Définir le nombre de bits

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.

La traduction chinoise de

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

Sortie

The average number of set bits after performing the operations is 1
Copier après la connexion

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!

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)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
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)

Sous-séquence non croissante la plus longue dans une chaîne binaire Sous-séquence non croissante la plus longue dans une chaîne binaire Sep 07, 2023 pm 11:13 PM

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

Écrit en C++, trouvez le nombre de permutations uniques d'une chaîne binaire commençant par 1 Écrit en C++, trouvez le nombre de permutations uniques d'une chaîne binaire commençant par 1 Sep 05, 2023 am 09:01 AM

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.

En PHP, la fonction pack() a pour fonction de convertir les données en chaîne binaire En PHP, la fonction pack() a pour fonction de convertir les données en chaîne binaire Aug 31, 2023 pm 02:05 PM

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

Vérifie si une chaîne peut former une chaîne palindrome en échangeant des paires de caractères au niveau des indices avec des caractères inégaux dans une chaîne binaire Vérifie si une chaîne peut former une chaîne palindrome en échangeant des paires de caractères au niveau des indices avec des caractères inégaux dans une chaîne binaire Sep 02, 2023 pm 08:09 PM

É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,

Calculer des chaînes binaires de longueur N qui sont des concaténations répétées de sous-chaînes Calculer des chaînes binaires de longueur N qui sont des concaténations répétées de sous-chaînes Sep 07, 2023 am 10:13 AM

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

Trouver le joueur avec le moins de zéros après avoir vidé une chaîne binaire (en supprimant les sous-chaînes non vides) Trouver le joueur avec le moins de zéros après avoir vidé une chaîne binaire (en supprimant les sous-chaînes non vides) Sep 16, 2023 am 10:21 AM

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

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

Nombre minimum de mouvements requis pour placer tous les 0 avant les 1 dans une chaîne binaire Nombre minimum de mouvements requis pour placer tous les 0 avant les 1 dans une chaîne binaire Sep 23, 2023 pm 01:29 PM

É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

See all articles