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