[PYTHON] Concours AtCoder pour débutants 167

en premier

Ceux qui sont venus se référer à cet article. Pardon. A, B, C, D compris A - Registration

s==t[0:-1]#(je veux dire[:-1]Mais je me sens bien...)

B - Easy Linear Programming Si vous tirez le numéro dans l'ordre, c'est ok Code source sale.

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 Je l'ai sauté. Pas bon du tout. La prochaine fois, apprenez.

Postscript Il semble que cela puisse être fait par une recherche de bits. Alors apprenez je l'ai essayé. En conséquence, c'était un coup clair. La méthode de recherche de bits s'est avérée pratique.

n,m,x=map(int,input().split())
item=[list(map(int,input().split()))for i in range(n)]#Or, numéro d'algorithme Up
bag=[]#Comment acheter un livre qui remplit les conditions
for i in range(2**n):#Tout examiner
    temp=[]#Livres à acheter
    job=[0]*m#Compréhension
    for s in range(n):#Examiner tous les chiffres
        if (i>>s)&1:#Si vous achetez
            temp.append(s)#Ajouter des livres à acheter
            for y in range(m):
                job[y]+=item[s][y+1]#Ajouter la compréhension
    for s in range(len(job)):
        if job[s]<x:#Si le niveau de compréhension est inférieur à X, interrompre
            break
    else:#Si toute compréhension est X ou plus
        money=0
        for s in temp:#Calculez le montant total
            money+=item[s][0]
        bag.append(money)
#S'il n'y a pas plus d'une combinaison à acheter-Sortie 1
print(min(bag) if len(bag)>=1 else -1)

D - Teleporter Si vous tournez K fois pour, ce ne sera que TLE, donc vous pouvez y aller s'il y a un surplus au début et à la fin de la boucle. J'ai pensé, mais je ne pouvais pas y aller. Quelqu'un me le dit. À propos, un exemple de l'énoncé du problème est donné.


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]:#Fin si vous avez déjà réussi
    print(a[go]+1)
    ed[go]=True
    go=a[go]
    c+=1
ed=[False]*n
print()
while not ed[go]:#La deuxième boucle peut être différente 6,5,2,5,3,Dans le cas de 2, 6,2,5,3,2,5,3,2,5,...Devient
    print(a[go]+1)
    ed[go]=True
    go=a[go]
    cc+=1#Enregistrer sous une autre variable
print()
for i in range((k-c)%cc):
    print(a[go]+1)
    go=a[go]
print()
print(go+1)

Postscript Il était possible d'assembler while, d'enregistrer la valeur sans activer l'impression avec for, et d'ajouter la sortie lorsque la boucle n'était jamais bouclée.

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:#Arrêtez si vous y allez deux fois
    if visited[p]==0:#J'y suis allé pour la première fois
        first.append(p)
    else:#Passé une fois
        roop.append(p)
    visited[p]+=1#Faire une marque
    p=a[p]#Téléportation
if len(first)>k:#Si ça ne boucle jamais
    print(first[k]+1)#Premier kth
else:
    print(roop[(k-(len(first)-len(roop)))%len(roop)]+1)#Sinon, soustrayez la première boucle et la deuxième boucle de k, et le surplus du nombre de fois de la deuxième boucle

finalement

E et F ne pouvaient pas atteindre. C'était mon troisième défi, mais c'était difficile. Je pensais que je devais apprendre plus d'algorithmes et être capable de penser logiquement. À propos, la nouvelle note est de 68.

Recommended Posts

Concours AtCoder pour débutants 167
Concours AtCoder Débutant 177
Concours AtCoder Débutant 179
Concours AtCoder Débutant 172
Concours AtCoder Débutant 180
Concours AtCoder Débutant 173
Concours Atcoder Débutant 153
Critique du concours AtCoder Beginner Contest 152
Concours AtCoder Débutant 181 Remarque
Critique du concours AtCoder Débutant 160
Critique du concours AtCoder Débutant 178
Concours AtCoder Débutant 180 Remarque
Critique du concours AtCoder pour débutant 166
AtCoder Débutant Contest 167 Évaluation
Concours AtCoder Débutant 182 Remarque
Critique du concours AtCoder
AtCoder Débutant Contest 169 Évaluation
Critique du concours AtCoder Débutant 181
AtCoder Débutant Contest 171 Critique
Critique du concours AtCoder pour débutant 182
Critique du concours AtCoder Débutant 180
Concours AtCoder pour débutants 156 WriteUp
Critique du concours AtCoder pour débutant 177
AtCoder Débutant Contest 168 Critique
Critique du concours AtCoder
Critique du concours AtCoder pour débutant 172
Concours AtCoder Débutant 183 Remarque
Critique du concours AtCoder
Concours AtCoder Débutant 184 Remarque
AtCoder Débutant Contest 175 Critique
Critique du concours AtCoder
Critique du concours AtCoder Beginner Contest 153
Critique du concours AtCoder pour débutant 156
AtCoder Débutant Contest 161 Critique
AtCoder Débutant Contest 170 Critique
Critique du concours AtCoder
AtCoder Débutant Contest 173 Critique
AtCoder Débutant Contest 155 Critique
AtCoder Débutant Contest 162 Évaluation
AtCoder Beginner Contest 181 Rapport de participation
AtCoder Beginner Contest 175 Inscription virtuelle
AtCoder Beginner Contest 161 Rapport de participation
AtCoder Beginner Contest 151 Rapport de participation
AtCoder Débutant Contest 176 Rapport de participation
AtCoder Beginner Contest 154 Rapport de participation
Note de participation au concours pour débutants AtCoder # 003
AtCoder Beginner Contest 166 Rapport de participation
AtCoder Beginner Contest # 002 Problème C
AtCoder Beginner Contest 145 Rapport de participation
AtCoder Débutant Contest 184 Rapport de participation
AtCoder Beginner Contest 165 Rapport de participation
Rapport de participation au concours AtCoder Débutant 160
AtCoder Beginner Contest 169 Rapport de participation
AtCoder Beginner Contest 159 Rapport de participation
AtCoder Beginner Contest 164 Rapport de participation
AtCoder Beginner Contest 168 Rapport de participation
Rapport de participation au concours AtCoder Débutant 150
AtCoder Beginner Contest 158 Rapport de participation
Rapport de participation au concours AtCoder Débutant 180