A. Registration
Du nouvel identifiant
ABC167a.py
a=input()
b=input()
s=len(a)
if b[:s]!=a:
print("No")
else:
print("Yes")
B. Easy linear programming Si $ k $ est inférieur à $ a $, choisissez des cartes $ k $ pour $ a $. Si $ k $ est inférieur à $ a + b $, la somme des cartes est $ a $. Sinon la somme des cartes est $ a- (k- (a + b))) $
ABC167b.py
a,b,c,k=map(int,input().split())
if k<=a:
print(k)
elif k<=a+b:
print(a)
else:
print(a-(k-(a+b)))
C. Skill up C'était AC 5 minutes après la date limite du concours. Je suis désolé. Depuis $ N <12 $, vous pouvez rechercher tous les bits et mettre à jour le prix le plus bas qui remplit les conditions.
ABC167c.py
n,m,x=map(int,input().split())
l=[]
for i in range(n):
a=list(map(int,input().split()))
l.append(a)
ans=99999999
for i in range(2 ** n):
bag = []
for j in range(n): #recherche peu complète
if ((i >> j) & 1):
bag.append(l[j])
skill=[0]*m
enough=[0]*m #Déterminez si chaque compétence dépasse x
money=0
for sub in bag:
money+=sub[0]
for kk in range(1,m+1):
skill[kk-1]+=sub[kk]
if skill[kk-1]>=x:
enough[kk-1]+=1
if 0 not in enough: #Calculer le prix si toutes les compétences dépassent x
if ans>money:
ans=money#Mettre à jour si en dessous du prix minimum
if ans==99999999: #S'il n'y a pas de changement par rapport à la valeur initiale-Sortie 1 sinon, le prix le plus bas
print(-1)
else:
print(ans)
D. Teleporter Tous les télépodes vont quelque part, vous vous précipiterez donc dans la boucle avec au plus $ N $. Par exemple, $ 1 => 3 => 4 => 1 ... $ dans l'exemple 1, $ 1> = 6 => 2 => 5 => 3 => 2 ... $ dans l'exemple 2. En supposant que le nombre de téléports avant d'entrer dans la boucle est $ t1 $ et le nombre de téléports par boucle après être entré dans la boucle est $ t2 $, la position immédiatement avant la dernière téléportation est $ (k-t1) mod. Ce sera t2 $. Tout ce que vous avez à faire est de sortir la destination de cet emplacement. Il y a beaucoup de lignes et le code est sale, il peut donc y avoir une solution plus efficace.
ABC167d.py
n,k=map(int,input().split())
a=list(map(int,input().split()))
l=[1]
di={}
di[1]=1
for i in a:
b=a[l[-1]-1]
if b in di:
x=b
break
l.append(b)
di[b]=1
t1=0
for j in l:
if j==x:
break
else:
t1+=1
t2=len(l)-t1
if k<=t1:
print(l[k])
else:
aa=(k-t1)%t2
print(l[t1+aa])
De plus, j'ai manqué de temps jusqu'à ce que D. Prochaine semaine ...
Recommended Posts