https://atcoder.jp/contests/abc154 A
s, t = input().split()
a, b = map(int, input().split())
u = input()
if u == s: a -= 1
else: b -= 1
print(a, b)
Branche en comparant uniquement s avec l'instruction if.
Soumission https://atcoder.jp/contests/abc154/submissions/9973325
B
s = input()
ans = 'x' * len(s)
print(ans)
(Longueur de la chaîne d'entrée) * 'x'
est sorti.
Je pourrais l'écrire en une seule ligne. print (len (entrée ()) * 'x')
Soumission https://atcoder.jp/contests/abc154/submissions/9975951
C
def main():
n = int(input())
a = list(map(int, input().split()))
seta = set(a)
ans = 'YES' if len(a) == len(seta) else 'NO'
print(ans)
main()
Vous n'avez qu'à vérifier s'il y a des éléments en double, vous pouvez donc combiner la liste avec set ()
pour créer un élément en double.
Ce n'est pas grave si vous comparez le nombre de ces éléments et vérifiez s'ils sont égaux.
Soumission https://atcoder.jp/contests/abc154/submissions/9980825
D
def main():
n, k = map(int, input().split())
p = list(map(int, input().split()))
ex = [0 for _ in range(n)]
for i in range(n):
ex[i] = (p[i]+1)/2
sumex = sum(ex[:k])
tmp = sum(ex[:k])
for i in range(n-k):
tmp = tmp + (ex[i+k] - ex[i])
sumex = max(sumex, tmp)
print(sumex)
main()
Si vous calculez la somme des valeurs attendues de j = i à i + k-1 dans la gamme de i = 1 ~ n-1, dans le pire des cas, il faudra N × K = 10 à la 10e puissance, donc c'est inutile (j'étais moi-même inutile) Soumission).
Par conséquent, préparez la somme des 1ère à k valeurs attendues comme valeur initiale dans tmp
, et la i + 1ème valeur attendue est(ème valeur attendue) - (ème valeur attendue) + (i En réglant + k + 1ère valeur attendue)
, vous pouvez éviter la peine de calculer (une image à noter?). Et mis à jour en comparant avec la valeur maximale «sumex» à ce moment-là.
(Valeur attendue de la somme de p_i) = (somme des valeurs attendues de p_i), le calcul des valeurs attendues peut donc être résumé à la fin.
Soumission (après la fin du concours) https://atcoder.jp/contests/abc154/submissions/10020043
Je voudrais l'ajouter si je peux AC.
Ajout des commentaires de @ c-yan. En ce qui concerne la description du problème D, la partie suivante semble fonctionner plus rapidement après correction. Avant correction
ex = [0 for _ in range(n)]
modifié
ex = [0] * n
De plus, dans ce cas, vous pouvez écrire sur une ligne en incluant la partie en dessous.
ex = [(p[i]+1)/2 for i in range(n)]
Il y avait un article utile ici en tant qu'article connexe. 8 petites différences de vitesse de traitement que Python devrait connaître
Recommended Posts