[PYTHON] Critique du concours AtCoder pour débutant 172

Les résultats de cette fois

スクリーンショット 2020-06-28 12.25.30.png

Impressions de cette époque

Cette fois, j'ai pu faire de mon mieux jusqu'à D. Je ne me concentre généralement pas du tout, mais je peux peut-être me concentrer de plus en plus pendant le concours. Après cela, je pense que si vous ajoutez un peu plus de puissance typique, le fond sera stable et vous pourrez à nouveau augmenter le taux. Je veux devenir bleu en juillet, mais je pense que cela dépend de mon travail acharné et de ma mentalité.

Problème A

Tel quel

A.py


a=int(input())
print(a*(1+a+a**2))

Problème B

Nous vérifierons s'ils sont égaux. La valeur booléenne est 0,1, vous pouvez donc l'ajouter telle quelle. Je pense que cela peut être écrit de manière plus simple en utilisant itertools ou map.

B.py


s=input()
t=input()
ans=0
for i in range(len(s)):
    ans+=(s[i]!=t[i])
print(ans)

Problème C

L'attente s'est transformée en conviction. Pour le problème C, j'essaye de poser le problème qui est indispensable pour faire la future compétition pro.

J'aime beaucoup le problème C récent parce que c'est une critique parce qu'il y a des problèmes que j'ai tendance à oublier. Bien sûr, cela me met mal à l'aise si je le fais bugger.

Avec une politique gourmande, s'il y a un livre que vous finissez de lire immédiatement en bas, c'est un gaspillage, donc vous pouvez voir que c'est impossible. Ici, ** il y a deux pupitres A et B, donc j'ai envie d'essayer de corriger une variable **. Par conséquent, supposons qu'il ait fallu $ SA $ pour lire le $ i $ ème livre du haut du bureau A. Ensuite, pour le reste, sélectionnez le livre sur le bureau B qui peut être lu à $ K-SA $ minutes du haut.

Ici, afin d'obtenir les informations qui apparaissent à plusieurs reprises ** combien de livres peuvent être lus en minutes ** pour $ O (1) $, ** le temps nécessaire pour lire chaque livre reçu par entrée est requis. La somme cumulative ** doit être définie, je l'ai donc fait dans le calcul précédent. (De plus, à ce stade, si vous ajoutez 0 au début en tant qu'élément ** lisez 0 livres à partir du haut **, ce sera plus facile à mettre en œuvre.)

De plus, comme le temps nécessaire pour lire un livre est toujours positif, si vous prenez la somme cumulée, ce sera une colonne croissante monotone, vous pouvez donc sélectionner le livre qui peut être lu dans $ K-SA $ minutes à partir du haut Peut être fait avec une dichotomie. Cette dichotomie trouve l'indice ** du plus grand élément en dessous de ** $ K-SA $, mais ** (index du plus petit élément plus grand que $ K-SA $) -1 ** Puisqu'ils ont la même valeur, il devrait être (index obtenu par bisect_right) -1. De plus, lorsque $ K-SA <0 $, l'index requis sera -1, il est donc nécessaire de l'exclure, donc soyez prudent.

De ce qui précède, il peut être implémenté avec $ O (N \ times \ log {M}) $.

C.py


from itertools import accumulate
from bisect import bisect_left,bisect_right
n,m,k=map(int,input().split())
a=[0]+list(accumulate(map(int,input().split())))
b=[0]+list(accumulate(map(int,input().split())))
ans=[0]
for i in range(n+1):
    c=bisect_right(b,k-a[i])-1
    if c!=-1:
        ans.append(c+i)
print(max(ans))

Problème D

J'y réfléchis parce que j'ai commencé à penser dans une direction un peu étrange.

Tout d'abord, si vous énumérez toutes les fractions, $ O (N \ sqrt {N}) $ ne sera évidemment pas à temps, et si vous énumérez les nombres premiers avec le tamis Eratostenes, $ O (N \ log {N}) $ sera à temps pour C ++. J'ai pensé, mais je l'ai évité (parce que je ne suis pas doué pour l'implémenter).

Je pense qu'il n'y a pas beaucoup d'options si vous coupez ces deux. Ce à quoi vous devez penser ici, c'est que ** une fraction est facile à considérer lorsque l'on considère ses multiples **. Par conséquent, ** les expériences ont été menées par ordre croissant. Ensuite, vous pouvez saisir les propriétés suivantes.

IMG_0438.PNG

$ i $ est un candidat pour une fraction, et celui de droite est un candidat pour un nombre qui a $ i $ comme fraction. Aussi, pour trouver la somme de $ K \ fois f (K) $ avec $ K = 1 $ ~ $ N $, considérez la somme des nombres qui apparaissent sur le côté droit de la figure ci-dessus, et pour chaque $ i $ sur le côté droit. Est une séquence d'égalité et sa somme est facilement calculée par $ O (1) $, elle peut donc être calculée pour tout $ i $ et implémentée par $ O (n) $.

✳︎ La somme de la séquence d'égalité est calculée par (premier terme + dernier terme) ((dernier terme-premier terme +1) / tolérance) / 2.

D.py


n=int(input())
ans=0
for i in range(1,n+1):
    x,y=i,(n//i)*i
    ans+=((n//i)*(x+y)//2)
print(ans)

E problème

Je me demande si je vais traiter du principe d'encapsulation dans un autre article et l'écrire dans cet article. J'ai déjà résolu le problème et je le mettrai à jour plus tard dans la journée.

Problème F

Je ne pouvais pas parce que je ne connaissais que le nom de Nim. Je pense que c'est facile si vous connaissez Nim (je vais le résoudre lundi).

Recommended Posts

Critique du concours AtCoder Beginner Contest 152
Critique du concours AtCoder Débutant 160
Critique du concours AtCoder Débutant 178
Critique du concours AtCoder pour débutant 166
AtCoder Débutant Contest 167 Évaluation
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 Débutant 180
Critique du concours AtCoder pour débutant 177
Critique du concours AtCoder
Critique du concours AtCoder pour débutant 172
Critique du concours AtCoder
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
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
AtCoder Beginner Contest 066 Revoir les questions précédentes
Concours AtCoder Débutant 181 Remarque
AtCoder Grand Contest 041 Critique
Revue du concours régulier AtCoder 105
Concours AtCoder Débutant 180 Remarque
Concours AtCoder Débutant 182 Remarque
Concours AtCoder pour débutants 156 WriteUp
AtCoder Grand Contest 045 Critique
Concours AtCoder pour débutants 167
Concours AtCoder Débutant 183 Remarque
AtCoder Regular Contest 106 Évaluation
Concours AtCoder Débutant 184 Remarque
AtCoder Grand Contest 046 Critique
Revue du concours régulier AtCoder 104
AtCoder Beginner Contest 102 Revue des questions précédentes
AtCoder Beginner Contest 072 Revue des questions précédentes
AtCoder Beginner Contest 062 Revue des questions précédentes
AtCoder Beginner Contest 113 Revue des questions précédentes
AtCoder Beginner Contest 074 Revue des questions précédentes
AtCoder Beginner Contest 051 Revue des questions précédentes
AtCoder Beginner Contest 127 Revue des questions précédentes
AtCoder Beginner Contest 119 Revue des questions précédentes
AtCoder Beginner Contest 054 Revue des questions précédentes
AtCoder Beginner Contest 117 Revue des questions précédentes
AtCoder Beginner Contest 105 Revue des questions précédentes
AtCoder Beginner Contest 112 Revue des questions précédentes
AtCoder Beginner Contest 076 Revue des questions précédentes
AtCoder Beginner Contest 089 Revue des questions précédentes