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é.
Tel quel
A.py
a=int(input())
print(a*(1+a+a**2))
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)
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))
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.
$ 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)
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.
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