ABC147 C --HonestOrUnkind2 [Python]

ABC147 C --HonestOrUnkind2

Le témoignage d'un total de N personnes, honnêtes et hostiles, est inscrit. La question est de savoir combien de personnes honnêtes peuvent exister au maximum. J'ai commencé à utiliser AtCoder pour m'habituer à Python à partir de décembre, et j'ai touché aux questions des dernières personnes, mais quand j'ai vu l'entrée, ma tête semblait malade. (Il est important de lire le problème en écrivant des phrases et des chiffres dans le cahier).


Solution

Les personnes honnêtes sont représentées par "1" et les personnes peu amicales sont représentées par "0", il est donc bon d'avoir l'état Nbit et de vérifier toutes les rues. C'est une recherche un peu complète.

Si N = 3, le bit passe de 000 à 111 dans l'ordre. "001" vérifie le témoignage de la première personne, "010" vérifie le témoignage de la deuxième personne, "011" vérifie le témoignage de la première et de la deuxième personne, et ainsi de suite. (Pourquoi hésitait-il? "Maintenant, en 001, la première personne est honnête avec la deuxième personne, donc à ce moment je dois vérifier le témoignage de la deuxième personne, puis le témoignage de la deuxième personne donne également le témoignage de la nième personne ... Il ne sert à rien de rechercher tous les bits ... Vous n'avez qu'à vérifier le témoignage de la personne qui a le mors à ce moment-là et si l'état de chaque personne est correct.)

répondre

    import sys

    def kensho(x,tlist):
        for lis in tlist:
            if((x>>(lis[1]-1)) & 1 == lis[2]):
                pass
            else:
                return -1

        return bin(x).count('1')


    def main():
        N = int(input())
        xy=[]
        ans=0

        for i in range(1,N+1):
            An= int(input())
            for j in range(0,An):
                x, y = map(int, input().split())
                xy.append([i,x,y])

        cnt = N
        tlist=[]
        for x in range (2 ** cnt):
            for y in range(cnt):
                if((x>>y) & 1):
                    for z in xy:
                        if(z[0]==y+1):
                            tlist.append(z)

            anstack = kensho(x,tlist)
            if(ans<anstack):
                ans=anstack

            del tlist[:]

        print(ans)

    main()

Je ne peux pas nier le sentiment que c'est un putain de code assez redondant, mais pour le moment, c'est un code AC. Il a fallu une heure ou deux pour comprendre même la question C. ・ Le sentiment de libération quand il est résolu est bon, mais dans le combat actuel, il n'a pas atteint le stade où il peut être résolu rapidement, il est donc encore nécessaire de faire des efforts. v ・. ・ V

Recommended Posts

ABC147 C --HonestOrUnkind2 [Python]
Mémorandum ABC [ABC163 C --managementr] (Python)
Mémorandum ABC [ABC159 C - Volume maximum] (Python)
Résoudre ABC163 A ~ C avec Python
Explication ABC127 A, B, C (python)
ABC166 en Python A ~ C problème
Résoudre ABC168 A ~ C avec Python
Mémorandum ABC [ABC161 C --Replacing Integer] (Python)
Résoudre ABC036 A ~ C avec Python
Résolu AtCoder ABC 114 C-755 avec Python3
Résoudre ABC162 A ~ C avec Python
Résoudre ABC167 A ~ C avec Python
ABC128 Commentaire A, B, C (python)
Explication ABC126 A, B, C (python)
Résoudre ABC037 A ~ C avec Python
Débutant ABC154 (Python)
AtCoder ABC 174 Python
Débutant ABC155 (Python)
notes de python C ++
python, openFrameworks (c ++)
Débutant ABC157 (Python)
AtCoder ABC 175 Python
Résoudre ABC175 A, B, C avec Python
Pointeur de modèle d'extension Python C / C ++
Mémorandum ABC [ABC160 C - Vendeur de voyages autour du lac] (Python)
Next Python en langage C
Résolvez ABC169 avec Python
API C en Python 3
Défiez AtCoder (ABC) 164 avec Python! Un problème ~ C
Étendre python en C ++ (Boost.NumPy)
AtCoder ABC 177 Python (A ~ E)
Résolvez AtCoder ABC166 avec python
Comparaison de vitesse de Python, Java, C ++
PyTorch C ++ VS Python (édition 2019)
AtCoder ABC 178 Python (A ~ E)
Atcoder ABC164 A-C en Python
Un programmeur C / C ++ défie Python (édition de classe)
ABC129 Commentaire A, B, C
Résoudre ABC176 E en Python
Atcoder ABC167 A-D en Python
Recherche binaire en Python / C ++
Résoudre ABC175 D en Python
Atcoder ABC165 A-D en Python
Sélection en plusieurs étapes (C # / Python) (ancien)
J'ai essayé l'extension C de Python
Python lancé par des programmeurs C
Atcoder ABC166 A-E en Python
AtCoder ABC 182 Python (A ~ D)
Atcoder ABC169 A-E en Python
AtCoder ABC177 A-D avec python
[Explication AtCoder] Contrôle ABC180 Problèmes A, B, C avec Python!
[Explication AtCoder] Contrôle ABC158 Problèmes A, B, C avec Python!
AtCoder ABC151 Problème D Comparaison de la vitesse en C ++ / Python / PyPy
[Explication AtCoder] Contrôle ABC164 Problèmes A, B, C avec Python!
[Explication AtCoder] Contrôle ABC168 Problèmes A, B, C avec Python!
ABC168