Atcoder ABC166 A-E in Python

Es war wieder 4 komplett. E ist Kommentar AC. Da der Code des Wettbewerbs so veröffentlicht wird, wie er ist, kann es einige unansehnliche Teile geben, aber bitte verzeihen Sie mir.

A. A?C Gibt ARC zurück, wenn die Eingabe ABC ist, andernfalls ABC

ABC166a.py


s=input()

if s=="ABC":
    print("ARC")
else:
    print("ABC")

B. Trick or Treat Fügen Sie für alle Süßigkeiten +1 zum Index des Kindes hinzu, das Sie haben. Zum Schluss zählen und geben Sie die Kinder aus, die keine Süßigkeiten haben.

ABC166b.py


n,k=map(int,input().split())
d=[]
a=[]
for i in range(k):
    d.append(int(input()))
    a.append(list(map(int,input().split())))
    
aa=[0]*n

for j in a:
    for k in j:
        aa[k-1]+=1 #Index des Kindes, das Süßigkeiten hat+1
        
ans=0

for x in aa:
    if x==0:
        ans+=1 #Die Anzahl der Kinder, die keine Süßigkeiten haben, ist 0, also zählen Sie die Anzahl der Kinder.

print(ans)

C. Peaks Bereiten Sie ein Array mit der gleichen Länge wie die Anzahl der Scheitelpunkte vor, vergleichen Sie die Höhen der beiden Scheitelpunkte und addieren Sie +1 zum unteren Scheitelpunkt. Wenn die Höhen gleich sind, werden beide um +1 erhöht. Schließlich wird die Anzahl der Eckpunkte ausgegeben, deren Wert 0 ist. Eine Straße bedeutete übrigens nur die Straße, die nach oben führte, nicht die Straße, die mit einem einzigen Schlag erreicht werden konnte. Ich habe falsch verstanden und Zeit verloren.

ABC166c.py


import copy

n,m=map(int,input().split())
h=list(map(int,input().split()))
l=[]
for i in range(m):
    a,b=map(int,input().split())
    l.append([a,b])
    
ll=[0]*n

for j in l:
    if h[j[0]-1]>h[j[1]-1]:
        ll[j[1]-1]+=1
    elif h[j[0]-1]==h[j[1]-1]:
        ll[j[1]-1]+=1
        ll[j[0]-1]+=1
    else:
        ll[j[0]-1]+=1

ans=0
#print(ll)
for k in ll:
    if k==0:
        ans+=1
print(ans)

D. I hate factorization Da es keine Einschränkungen für $ A $ und $ B $ gibt, wird das Round-Robin nicht zu TLE: Ich habe ungefähr 1000 Stück vorbereitet und berechnet. Offizieller Kommentar Betrachtet man, dass ungefähr 250 einschließlich negativer Zahlen ausreichen. Es ist notwendig, abs einmal zu nehmen, da die Potenzwurzel einer negativen Zahl nicht richtig ausgegeben wird.

ABC166d.py


x=int(input())
l=[]

for i in range(300): #300**5=X kleiner als 2430000000000^Zahl, die durch 5 dargestellt werden kann (-x enthalten) hinzugefügt
    a=i**5
    l.append(a)
    l.append(-a)
        
for j in l:
    for k in l:
        aa=j-k
        if j!=k and aa==x:
            ans=[]
            for z in [j,k]:
                aaa=abs(z)**(1/5) #5. Wurzel
                if z>=0:
                    ans.append(int(aaa))
                else:
                    ans.append(int(-aaa))
            print(*ans)                
            exit()

E. This Message Will Self-Destruct in 5s Siehe Offizielle Erklärung für den Ansatz. Bereiten Sie die Summe aus Indexwert und Höhe sowie die Differenz zwischen Indexwert und Höhe vor. Zählen Sie dann die Anzahl der Muster, bei denen die beiden Werte übereinstimmen. Insbesondere werden zwei Arrays l und r vorbereitet, und die Anzahl von r mit dem gleichen Wert für jedes Element von l wird gezählt. Wenn ich count verwendet habe, wurde es zu TLE, also habe ich Counter verwendet, um es als assoziatives Array zu speichern und es abzurufen. Ich habe nicht überprüft, wie schnell es ist ...

ABC166e_TLE.py


from collections import Counter

n=int(input())
a=list(map(int,input().split()))
ans=0
l=[]
r=[]
for i,j in enumerate(a):
    l.append(i+j)
    r.append(i-j)

for i in l:
    ans+=r.count(i)
    
print(ans)

ABC166e.py


from collections import Counter

n=int(input())
a=list(map(int,input().split()))
ans=0
l=[]
r=[]
for i,j in enumerate(a):
    l.append(i+j)
    r.append(i-j)

b=Counter(r)
for i in l:
    ans+=b.get(i,0)

print(ans)

Wenn Sie D in etwa 30-40 Minuten nicht lösen können, wird die Straße nach Hellblau nicht geöffnet. Ich muss mein Bestes geben

Recommended Posts

Atcoder ABC166 A-E in Python
Atcoder ABC169 A-E in Python
Atcoder ABC164 A-C in Python
Atcoder ABC167 A-D in Python
Atcoder ABC165 A-D in Python
AtCoder ABC177 A-D mit Python
AtCoder ABC 175 Python
Löse den Atcoder ABC169 A-D mit Python
Täglicher AtCoder # 36 mit Python
AtCoder # 2 jeden Tag mit Python
Täglicher AtCoder # 32 in Python
Täglicher AtCoder # 6 in Python
Täglicher AtCoder # 18 in Python
Täglicher AtCoder # 53 in Python
Täglicher AtCoder # 33 in Python
Täglicher AtCoder # 7 in Python
AtCoder # 24 jeden Tag mit Python
Täglicher AtCoder # 37 in Python
AtCoder # 8 jeden Tag mit Python
Täglicher AtCoder # 42 in Python
Täglicher AtCoder # 17 mit Python
Täglicher AtCoder # 54 in Python
Täglicher AtCoder # 11 in Python
Täglicher AtCoder # 47 mit Python
Täglicher AtCoder # 13 in Python
Täglicher AtCoder # 45 mit Python
AtCoder # 30 jeden Tag in Python
Täglicher AtCoder # 40 mit Python
Täglicher AtCoder # 10 mit Python
AtCoder # 5 jeden Tag mit Python
Täglicher AtCoder # 28 in Python
Täglicher AtCoder # 39 in Python
Täglicher AtCoder # 19 in Python
Täglicher AtCoder # 52 in Python
Täglicher AtCoder # 3 in Python
Täglicher AtCoder # 14 mit Python
Täglicher AtCoder # 50 mit Python
Täglicher AtCoder # 26 mit Python
Täglicher AtCoder # 4 mit Python
Täglicher AtCoder # 43 in Python
Täglicher AtCoder # 29 in Python
Jeden Tag mit Python AtCoder # 22
Täglicher AtCoder # 49 in Python
Täglicher AtCoder # 27 in Python
Löse ABC169 mit Python
Täglicher AtCoder # 25 mit Python
Täglicher AtCoder # 16 in Python
Täglicher AtCoder # 12 in Python
Täglicher AtCoder # 48 in Python
Täglicher AtCoder # 23 in Python
Täglicher AtCoder # 34 in Python
Täglicher AtCoder # 51 mit Python
Täglicher AtCoder # 31 in Python
Jeden Tag mit Python AtCoder # 46
Täglicher AtCoder # 35 mit Python
AtCoder # 9 jeden Tag mit Python
Täglicher AtCoder # 44 mit Python
Jeden Tag mit Python AtCoder # 41
AtCoder ABC 177 Python (A ~ E)