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.
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 ">")
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
$ 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))
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