[PYTHON] AtCoder Beginner Contest 078 Revue des questions précédentes

Temps requis

スクリーンショット 2020-03-24 19.45.03.png

Impressions

Je n'ai pas pu poser de question lorsque je me suis allongé sur le sol et que je me suis endormi parce que je ne comprenais pas le problème C à Bachacon. Quelle est la signification de Bachacon? Je pense que c'était un commandement que cela se produise parce que je fais de la techto sans penser à travailler dur (même si je le ressens à chaque fois). Après tout, je n'ai pas compris le problème C même après le concours. Pourquoi. → J'ai oublié comment résoudre la limite, et je n'ai pas pu aborder la probabilité sensuellement ... Le problème D est résolu après avoir résolu le problème C tout en regardant la réponse. → Je ne pouvais pas bien comprendre les bases du problème du jeu.

Problème A

Il est facile d'écrire à l'aide de l'opérateur ternaire.

answerA.py


x,y=input().split()
print("=" if x==y else "<" if x<y else ">")

Problème B

Vérifiez si chaque nombre de personnes peut s'asseoir dans l'ordre croissant de x.

answerB.py


x,y,z=map(int,input().split())
for i in range(x,0,-1):
    if i*y+(i+1)*z<=x:
        print(i)
        break

Problème C

$ X = 1900 \ fois m + 100 \ fois (nm) $, $ p = (1/2) ^, où x [ms] est le temps requis pour une exécution et p est la probabilité d'être précis dans tous les cas. Évidemment, ce sera m $. De là, j'aimerais trouver le temps total y [ms] qui répondra à la question, mais j'ai essayé de trouver la limite ** en supposant que je me retrouve avec k exécute ici **. Cependant, j'ai complètement oublié comment trouver la limite et je n'ai pas pu la résoudre (je voulais le faire comme cet article ...). Si vous le faites comme la solution Writer, vous pouvez la résoudre avec une équation linéaire simple sans utiliser la limite. En d'autres termes, ** le temps nécessaire pour la première soumission est x et la soumission échoue 1-p, cela prend y plus **, donc $ y = x + (1-p) \ times y $ tient. Y = x / p est obtenu. Le reste est juste pour calculer cela, donc ce sera comme suit. ✳︎ En outre, il est clair que la valeur attendue du nombre de fois qu'un événement qui réussit avec une probabilité p réussira est 1 / p **, il faut donc s'en souvenir.

answerC.py


n,m=map(int,input().split())
x=100*n+1800*m
p=2**(-m)
print(int(x/p))

Problème D

Je n'ai pas du tout compris quand j'y ai pensé, mais quand j'ai vu la réponse, ce n'était pas le cas. Est-ce juste un idiot qui ne peut pas faire de son mieux pour le résoudre s'il suit la norme? ?? Tout d'abord, ces problèmes sont ** extrêmement avantageux ** (** le jeu n'est pas symétrique **, c'est donc le cas). Ce qui est encore plus remarquable, c'est que ** x ou y prend toujours la dernière carte **. Je voudrais penser à ces deux choses à l'esprit. Premièrement, si la première attaque ** prend la dernière carte lors de votre premier tour **, vous ne pouvez rien faire après cela, donc ce sera $ abs (a [-1] -w) $. Ensuite, si la première attaque ** ne prend pas la dernière carte de votre premier tour **, vous pouvez également prendre la deuxième carte et le score final est $ abs (a_k-a_n) $ (k = Il devient 1 ~ n-1). La meilleure première chose à faire est de garder $ a_k $ aussi loin que possible de $ a_n $. Cependant, dans le cas de $ k \ ne n-1 $ **, cela donne à la deuxième attaque la possibilité de sélectionner $ a_k $ aussi près que possible de $ a_n $ **. En répétant cette opération, $ abs (a_l-a_n) $ (l = 1 ~ n-1) est finalement décidé, et si ce score est inférieur à $ abs (a_l-a_ {n-1}) $, * * Le premier choix pour le premier coup était faux **. De plus, la même chose peut être dite pour la deuxième attaque, et si le score final est supérieur à $ abs (a_l-a_ {n-1}) $, ** le choix lors du choix de la carte dans la deuxième attaque était faux. **Ce sera. En d'autres termes, à partir de cet ** état d'équilibre **, si la première carte n'est pas sélectionnée au premier tour, le score final sera $ abs (a_n-a_ {n-1}) $. Je comprends. De ce qui précède, vous pouvez choisir le plus grand de $ abs (a [-1] -w) $ et $ abs (a_n-a_ {n-1}) $ pour la première attaque, et ce sera comme suit (également pour la première attaque) Il n'est pas possible de choisir un score plus élevé (comme indiqué ci-dessus).

answerD.py


n,z,w=map(int,input().split())
a=list(map(int,input().split()))
if len(a)==1:
    print(abs(a[-1]-w))
else:
    print(max(abs(a[-1]-w),abs(a[-1]-a[-2])))

Recommended Posts

AtCoder Beginner Contest 102 Revue des questions précédentes
AtCoder Beginner Contest 072 Revue des questions précédentes
AtCoder Beginner Contest 085 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 151 Revue des questions précédentes
AtCoder Beginner Contest 075 Revue des questions précédentes
AtCoder Beginner Contest 054 Revue des questions précédentes
AtCoder Beginner Contest 110 Revue des questions précédentes
AtCoder Beginner Contest 117 Revue des questions précédentes
AtCoder Beginner Contest 070 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 069 Revue des questions précédentes
AtCoder Beginner Contest 056 Revue des questions précédentes
AtCoder Beginner Contest 087 Revue des questions précédentes
AtCoder Beginner Contest 067 Revue des questions précédentes
AtCoder Beginner Contest 093 Revue des questions précédentes
AtCoder Beginner Contest 046 Revue des questions précédentes
AtCoder Beginner Contest 049 Revue des questions précédentes
AtCoder Beginner Contest 078 Revue des questions précédentes
AtCoder Beginner Contest 081 Revue des questions précédentes
AtCoder Beginner Contest 047 Revue des questions précédentes
AtCoder Beginner Contest 060 Revue des questions précédentes
AtCoder Beginner Contest 104 Revue des questions précédentes
AtCoder Beginner Contest 057 Revue des questions précédentes
AtCoder Beginner Contest 121 Revue des questions précédentes
AtCoder Beginner Contest 126 Revue des questions précédentes
AtCoder Beginner Contest 090 Revue des questions précédentes
AtCoder Beginner Contest 103 Revue des questions précédentes
AtCoder Beginner Contest 061 Revue des questions précédentes
AtCoder Beginner Contest 059 Revue des questions précédentes
AtCoder Beginner Contest 044 Revue des questions précédentes
AtCoder Beginner Contest 083 Revue des questions précédentes
AtCoder Beginner Contest 048 Revue des questions précédentes
AtCoder Beginner Contest 124 Revue des questions précédentes
AtCoder Beginner Contest 116 Revue des questions précédentes
AtCoder Beginner Contest 097 Revue des questions précédentes
AtCoder Beginner Contest 088 Revue des questions précédentes
AtCoder Beginner Contest 092 Revue des questions précédentes
AtCoder Beginner Contest 099 Revue des questions précédentes
AtCoder Beginner Contest 065 Revue des questions précédentes
AtCoder Beginner Contest 053 Revue des questions précédentes
AtCoder Beginner Contest 094 Revue des questions précédentes
AtCoder Beginner Contest 063 Revue des questions précédentes
AtCoder Beginner Contest 107 Revue des questions précédentes
AtCoder Beginner Contest 071 Revue des questions précédentes
AtCoder Beginner Contest 064 Revue des questions précédentes
AtCoder Beginner Contest 082 Revue des questions précédentes
AtCoder Beginner Contest 084 Revue des questions précédentes
AtCoder Beginner Contest 068 Revue des questions précédentes
AtCoder Beginner Contest 058 Revue des questions précédentes
AtCoder Beginner Contest 043 Revue des questions précédentes
AtCoder Beginner Contest 098 Revue des questions précédentes
AtCoder Beginner Contest 114 Revue des questions précédentes
AtCoder Beginner Contest 045 Revue des questions précédentes
AtCoder Beginner Contest 120 Revue des questions précédentes