ABC147 C --HonestOrUnkind2 [Python]

ABC147 C --HonestOrUnkind2

Das Zeugnis von insgesamt N Personen, ehrlich und unfreundlich, wird eingegeben. Die Frage ist, wie viele ehrliche Menschen maximal existieren können. Ich habe ab Dezember angefangen, AtCoder zu machen, um mich an Python zu gewöhnen, und ich habe frühere Fragen der neuesten Leute angesprochen, aber als ich die Eingabe sah, schien mein Kopf einen Fuß zu haben. (Es ist wichtig, das Problem zu lesen, während Sie Sätze und Zahlen in das Notizbuch schreiben.)


Lösung

Ehrliche Menschen werden durch "1" und unfreundliche Menschen durch "0" dargestellt. Es ist also gut, den Nbit-Status zu haben und alle Straßen zu überprüfen. Es ist eine etwas vollständige Suche.

Wenn N = 3 ist, wird das Bit der Reihe nach von 000 auf 111 gedreht. "001" überprüft das Zeugnis der ersten Person, "010" überprüft das Zeugnis der zweiten Person, "011" überprüft das Zeugnis der ersten und zweiten Person und so weiter. (Worin haben Sie sich verlaufen? "Jetzt 001 ist die erste Person ehrlich mit der zweiten Person, daher muss ich zu diesem Zeitpunkt das Zeugnis der zweiten Person überprüfen, und dann wird das Zeugnis der zweiten Person auch das Zeugnis der n-ten Person sein ... Es macht keinen Sinn, alle Bits zu suchen ... Sie müssen nur das Zeugnis der Person überprüfen, die zu diesem Zeitpunkt das Gebiss hat und ob der Zustand jeder Person korrekt ist.)

Antworten

    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()

Ich kann nicht leugnen, dass es ein ziemlich redundanter verdammter Code ist, aber im Moment ist es ein AC-Code. Es dauerte ein oder zwei Stunden, um selbst die C-Frage zu verstehen. ・ Das Gefühl der Befreiung, wenn es gelöst ist, ist gut, aber im eigentlichen Wettbewerb hat es nicht das Stadium erreicht, in dem es schnell gelöst werden kann, so dass es immer noch notwendig ist, Anstrengungen zu unternehmen. v ・. ・ V.

Recommended Posts

ABC147 C --HonestOrUnkind2 [Python]
ABC-Memorandum [ABC163 C --managementr] (Python)
ABC-Memorandum [ABC159 C - Maximales Volumen] (Python)
Löse ABC163 A ~ C mit Python
ABC127 A, B, C Erklärung (Python)
ABC166 in Python A ~ C Problem
Löse ABC168 A ~ C mit Python
ABC-Memorandum [ABC161 C - Integer ersetzen] (Python)
Löse ABC036 A ~ C mit Python
AtCoder ABC 114 C-755 mit Python3 gelöst
Löse ABC162 A ~ C mit Python
Löse ABC167 A ~ C mit Python
ABC128 A, B, C Kommentar (Python)
ABC126 A, B, C Erklärung (Python)
Löse ABC037 A ~ C mit Python
Anfänger ABC154 (Python)
AtCoder ABC 174 Python
Anfänger ABC155 (Python)
Python C ++ Notizen
Python, openFrameworks (c ++)
Anfänger ABC157 (Python)
AtCoder ABC 175 Python
Löse ABC175 A, B, C mit Python
Python C / C ++ - Erweiterungsmusterzeiger
ABC-Memorandum [ABC160 C - Reiseverkäufer um den See] (Python)
Weiter Python in C-Sprache
Löse ABC169 mit Python
C-API in Python 3
Fordern Sie AtCoder (ABC) 164 mit Python heraus! A ~ C Problem
Erweitern Sie Python in C ++ (Boost.NumPy)
AtCoder ABC 177 Python (A ~ E)
Löse AtCoder ABC166 mit Python
Geschwindigkeitsvergleich von Python, Java, C ++
PyTorch C ++ VS Python (Ausgabe 2019)
AtCoder ABC 178 Python (A ~ E)
Atcoder ABC164 A-C in Python
C / C ++ - Programmierer fordert Python heraus (Class Edition)
ABC129 A, B, C Kommentar
Löse ABC176 E in Python
Atcoder ABC167 A-D in Python
Binäre Suche in Python / C ++
Löse ABC175 D in Python
Atcoder ABC165 A-D in Python
Mehrstufige Auswahl (C # / Python) (alt)
Ich habe die C-Erweiterung von Python ausprobiert
Python wurde von C-Programmierern gestartet
Atcoder ABC166 A-E in Python
AtCoder ABC 182 Python (A ~ D)
Atcoder ABC169 A-E in Python
AtCoder ABC177 A-D mit Python
[AtCoder Erklärung] Kontrollieren Sie ABC180 A, B, C Probleme mit Python!
[AtCoder Erklärung] Kontrollieren Sie ABC158 A, B, C Probleme mit Python!
AtCoder ABC151 Problem D Geschwindigkeitsvergleich in C ++ / Python / PyPy
[AtCoder Erklärung] Kontrollieren Sie ABC164 A, B, C Probleme mit Python!
[AtCoder Erklärung] Kontrollieren Sie ABC168 A, B, C Probleme mit Python!
ABC168