[PYTHON] AtCoderBeginnerContest164 Review & Summary (premier semestre)

AtCoder ABC164 Ceci est un résumé des problèmes de AtCoderBeginnerContest164 qui s'est tenu le 26/04/2020 (dim) dans l'ordre du problème A, en tenant compte de la considération. La première moitié traite des problèmes jusqu'à ABC. Le problème est cité, mais veuillez consulter la page du concours pour plus de détails. Cliquez ici pour la page du concours Commentaire officiel PDF

Problème Un mouton et des loups

Énoncé du problème Il y a des moutons $ S $ et des loups $ W $. Lorsque le nombre de loups est supérieur au nombre de moutons, le mouton sera attaqué par le loup. Sortie "unsafe" si le mouton est attaqué par le loup, "safe" si non attaqué.

Si vous utilisez l'instruction if, vous avez terminé. Je n'écris pas grand chose d'autre, mais si j'ose écrire un peu, la condition attaquée à l'origine est écrite en utilisant "** ou plus **", donc je peux écrire le code tel quel, mais dans le passé j'ai écrit un opérateur de comparaison De l'expérience d'écrire "= <" et d'avoir un accident, j'évite souvent consciemment le dessus et le dessous. La bonne réponse est "<=". Je ne sais pas si j'ai créé un problème comme un loup humain ou si je l'ai aimé depuis le début parce que les loups humains, etc. sont populaires parmi les nouveaux étudiants sur SNS sans commencer l'université à Corona, mais "Oui" ou "Non" J'aime personnellement le problème (je fais très attention aux fautes d'orthographe et à la casse).

abc164a.py


s, w = map(int, input().split())
if s > w:
    print("safe")
else:
    print("unsafe")

Problème B Bataille

Énoncé du problème Takahashi et Aoki combattent des monstres. Le monstre de Takahashi-kun a $ A $ en force physique et $ B $ en puissance d'attaque. Le monstre d'Aoki a $ C $ en force physique et $ D $ en puissance d'attaque. Attaque dans l'ordre de Takahashi-kun → Aoki-kun → Takahashi-kun → Aoki-kun → ... Attaquer signifie réduire la force physique du monstre de votre adversaire du montant de la force d'attaque de votre monstre. Si vous continuez à faire cela jusqu'à ce que l'un des monstres ait 0 ou moins de force physique, celui dont la force physique devient 0 ou moins perd d'abord, et l'autre gagne. Sortez "Oui" si Takahashi gagne et "Non" s'il perd.

Pour le moment, je publierai le code que j'ai soumis en premier.

Post-scriptum: Python n'a pas besoin de () pendant un certain temps, vous pouvez donc écrire while True:, mais j'écris souvent avec () attaché en raison de l'habitude d'autres langues (sueur)

abc164b.py


a, b, c, d = map(int, input().split())
while(True):
    c = c - b
    if c <= 0:
        print("Yes")
        break
    a = a - d
    if a <= 0:
        print("No")
        break

Bien sûr, si la force physique de $ A $ et $ C $ est extrêmement grande, je ne peux pas faire de boucle, mais comme la contrainte de ce problème était un entier de 100 ou moins, j'ai écrit le code exactement comme la phrase du problème sans hésitation. C'était. On m'a beaucoup parlé sur Twitter, mais je ne le regrette pas (pensez aux erreurs comme WA). Bien sûr, le code suivant m'a traversé la tête, alors je l'ai réécrit après la fin du concours.

abc164b.py


a, b, c, d = map(int, input().split())
if (c + b - 1) // b <= ( a + d - 1) // d:
    print("Yes")
else:
    print("No")

C'est un peu gênant car il est nécessaire d'arrondir après la virgule décimale, donc la formule de calcul sera un peu maladroite, mais ~~ Si vous écrivez en production, il est plus sûr d'utiliser ceil dans le module mathématique ~~.

Postscript: Comme l'a commenté @DaikiSuyama, il semble plus sûr de ne pas utiliser la fonction ceil car il semble que des erreurs peuvent survenir. J'ai écrit «** Is it safe **» parce que je ne voulais pas que la formule soit compliquée, mais ce n'était pas sûr. J'ai confirmé que ce problème passera, mais on m'a dit que ABC046C n'a pas réussi en raison d'une erreur. Ces commentaires sont vraiment utiles. Merci, @DaikiSuyama. Je dois également résoudre correctement les questions du passé.

abc164b.py


import math
a, b, c, d = map(int, input().split())
if math.ceil(c / b) <= math.ceil(a / d):
    print("Yes")
else:
    print("No")

C problème gacha

Énoncé du problème J'ai fait une loterie $ N $ fois, et au moment $ i $ j'ai reçu un cadeau gratuit dont le type est représenté par la chaîne $ S_i $. Combien de types de prix avez-vous reçus?

Si vous utilisez le type de dictionnaire, vous avez terminé. J'ai eu de la chance car j'ai tout utilisé dans le traitement du langage naturel. Si vous utilisez len, python est vraiment pratique car il renvoie non seulement la liste mais aussi le nombre de clés dans le dict. Quand vous comptez habituellement la fréquence d'apparition des mots

python


word_dict = {}
for word in word_list:
    if word in word_dict
        word_dict[word] += 1
    else:
        word_dict[word] = 1

Cependant, je n'ai pas utilisé ce problème plusieurs fois, donc j'ai pu l'écrire facilement.

Post-scriptum: J'utilise dict cette fois, mais comme l'explication officielle le dit, il peut également être implémenté avec set et map.

abc161c.py


n = int(input())
dict_s = {}
for i in range(0, n):
    s = input()
    dict_s[s] = 1
print(len(dict_s))

C'est la fin du premier semestre. La seconde moitié expliquera le problème DEF. Après avoir résolu ABC, ce concours est resté bloqué et a essayé et a échoué, mais à la fin il s'est terminé sans "AC", et je regrette qu'il ait été comparé à la vitesse de course à courte distance au problème C. Après tout, je veux sortir de la course en posant des questions sur un problème difficile. Merci d'avoir lu jusqu'à la fin de la première moitié pour le moment. Suite dans la seconde moitié.

Recommended Posts

AtCoderBeginnerContest175 Review & Summary (premier semestre)
AtCoderBeginnerContest164 Review & Summary (premier semestre)
AtCoderBeginnerContest169 Review & Summary (premier semestre)
AtCoderBeginnerContest174 Review & Summary (premier semestre)
AtCoderBeginnerContest173 Review & Summary (First Half)
AtCoderBeginnerContest165 Review & Summary (premier semestre)
AtCoderBeginnerContest170 Review & Summary (premier semestre)
AtCoderBeginnerContest167 Review & Summary (premier semestre)
AtCoderBeginnerContest177 Review & Résumé (premier semestre)
AtCoderBeginnerContest168 Review & Summary (premier semestre)
AtCoderBeginnerContest178 Review & Summary (premier semestre)
AtCoderBeginnerContest171 Review & Summary (premier semestre)
AtCoderBeginnerContest166 Review & Summary (premier semestre)
AtCoderBeginnerContest161 Review & Summary (premier semestre)
AtCoderBeginnerContest172 Review & Summary (premier semestre)
AtCoderBeginnerContest176 Review & Summary (premier semestre)
AtCoderBeginnerContest178 Review & Summary (second semestre)
AtCoderBeginnerContest161 Review & Summary (second semestre)
AtCoderBeginnerContest164 Review & Summary (second semestre)
AtCoderBeginnerContest176 Review & Summary (second semestre)
AtCoderBeginnerContest168 Review & Summary (second semestre)
AtCoderBeginnerContest169 Review & Summary (second semestre)
AtCoderBeginnerContest166 Review & Summary (second semestre)
AtCoderBeginnerContest171 Review & Summary (second semestre)
AtCoderBeginnerContest174 Review & Summary (second semestre)
AtCoderBeginnerContest173 Review & Summary (second semestre)
AtCoderBeginnerContest177 Review & Summary (second semestre)
AtCoderBeginnerContest180 Examen et résumé
AtCoderBeginnerContest181 Examen et résumé
AtCoderBeginnerContest182 Examen et résumé
AtCoderBeginnerContest183 Review & Résumé
AtCoderBeginnerContest179 Review & Résumé
Résumé du didacticiel Django Girls Première moitié
AtCoder Revue des questions précédentes (première moitié de 12 / 8,9)