Diejenigen, die gekommen sind, um auf diesen Artikel zu verweisen. Es tut uns leid. A, B, C, D verstanden A - Registration
s==t[0:-1]#(ich meine[:-1]Aber ich fühle mich gut...)
B - Easy Linear Programming Wenn Sie die Nummer in der richtigen Reihenfolge ziehen, ist dies in Ordnung Schmutziger Quellcode.
def j():
a,b,c,k=map(int,input().split())
o=0
x=k
if a!=0:
o+=a
k-=a
if k==0:
return a
elif k<0:
return x
if b!=0:
k-=b
if k<=0:
return a
if c!=0:
k-=c
o-=c
if k==0:
return o
elif k<0:
return o-k
print(j())
C - Skill Up Ich habe es übersprungen. Überhaupt nicht gut zu suchen. Bis zum nächsten Mal lernen.
Nachtrag Es scheint, dass dies durch Bitsuche erfolgen kann. Also lernen habe ich es versucht. Infolgedessen war es ein One-Shot-Clear. Die Bit-Suchmethode erwies sich als praktisch.
n,m,x=map(int,input().split())
item=[list(map(int,input().split()))for i in range(n)]#Gold, Algorithmus Up Nummer
bag=[]#So kaufen Sie ein Buch, das die Bedingungen erfüllt
for i in range(2**n):#Untersuche alle
temp=[]#Bücher zu kaufen
job=[0]*m#Verständnis
for s in range(n):#Untersuche alle Ziffern
if (i>>s)&1:#Wenn du kaufst
temp.append(s)#Fügen Sie Bücher hinzu, um zu kaufen
for y in range(m):
job[y]+=item[s][y+1]#Verständnis hinzufügen
for s in range(len(job)):
if job[s]<x:#Wenn das Verständnisniveau kleiner als X ist, brechen Sie
break
else:#Wenn alles Verständnis X oder höher ist
money=0
for s in temp:#Berechnen Sie den Gesamtbetrag
money+=item[s][0]
bag.append(money)
#Wenn es nicht mehr als eine Kombination zum Kaufen gibt-Ausgabe 1
print(min(bag) if len(bag)>=1 else -1)
D - Teleporter Wenn Sie K-mal für drehen, ist es nur TLE, sodass Sie gehen können, wenn am Anfang und am Ende der Schleife ein Überschuss vorhanden ist. Ich dachte, aber ich konnte nicht gehen. Jemand sagt es mir. Übrigens wird ein Beispiel für die Problemstellung gemacht.
n,k=map(int,input().split())
a=[int(i)-1 for i in input().split()]
ed=[False]*n
go=0
c=0
cc=0
while not ed[go]:#Beenden Sie, wenn Sie bereits bestanden haben
print(a[go]+1)
ed[go]=True
go=a[go]
c+=1
ed=[False]*n
print()
while not ed[go]:#Die zweite Schleife kann unterschiedlich sein 6,5,2,5,3,Im Fall von 2, 6,2,5,3,2,5,3,2,5,...Wird
print(a[go]+1)
ed[go]=True
go=a[go]
cc+=1#Als weitere Variable speichern
print()
for i in range((k-c)%cc):
print(a[go]+1)
go=a[go]
print()
print(go+1)
Nachtrag Es war möglich, während zusammenzusetzen, den Wert zu speichern, ohne den Druck mit for zu drehen, und die Ausgabe hinzuzufügen, wenn die Schleife nie geloopt wurde.
n,k=map(int,input().split())
a=[int(i)-1 for i in input().split()]
p=0
visited=[0]*n
first=[]
roop=[]
while visited[p]!=2:#Hör auf, wenn du zweimal gehst
if visited[p]==0:#Ich ging zum ersten Mal
first.append(p)
else:#Einmal bestanden
roop.append(p)
visited[p]+=1#Eine Markierung machen
p=a[p]#Teleportieren
if len(first)>k:#Wenn es nie Schleifen gibt
print(first[k]+1)#Erster kth
else:
print(roop[(k-(len(first)-len(roop)))%len(roop)]+1)#Andernfalls subtrahieren Sie die erste und die zweite Schleife von k und den Überschuss der Häufigkeit der zweiten Schleife
E und F konnten nicht erreichen. Es war meine dritte Herausforderung, aber es war schwierig. Ich dachte, ich müsste mehr Algorithmen lernen und logisch denken können. Das neue Rating ist übrigens 68.
Recommended Posts