AtCoder ABC164 Dies ist eine Zusammenfassung der Probleme von AtCoderBeginnerContest164, die am 26.04.2020 (So) in der Reihenfolge von Problem A unter Berücksichtigung der Berücksichtigung durchgeführt wurden. Das erste Halbjahr befasst sich mit Fragen bis ABC. Das Problem wird zitiert, aber bitte überprüfen Sie die Wettbewerbsseite für Details. Klicken Sie hier für die Wettbewerbsseite Offizieller Kommentar PDF
Problemstellung Es gibt $ S $ Schafe und $ W $ Wolf. Wenn die Anzahl der Wölfe größer ist als die Anzahl der Schafe, werden die Schafe vom Wolf angegriffen. Ausgabe "unsicher", wenn das Schaf vom Wolf angegriffen wird, "sicher", wenn es nicht angegriffen wird.
Wenn Sie die if-Anweisung verwenden, sind Sie fertig. Ich schreibe sonst nicht viel, aber wenn ich mich traue, ein wenig zu schreiben, wird die ursprünglich angegriffene Bedingung mit "** oder mehr **" geschrieben, damit ich den Code so schreiben kann, wie er ist, aber in der Vergangenheit habe ich einen Vergleichsoperator geschrieben Aus der Erfahrung heraus, "= <" zu schreiben und einen Unfall zu haben, vermeide ich oft bewusst das Oben und Unten. Die richtige Antwort lautet "<=". Ich weiß nicht, ob ich ein Problem wie ein menschlicher Wolf gemacht habe oder ob es mir von Anfang an gefallen hat, weil menschlicher Wolf usw. bei neuen SNS-Studenten beliebt ist, ohne eine Universität in Corona zu beginnen, aber "Ja" oder "Nein" Ich persönlich mag das Problem (ich bin sehr vorsichtig mit Rechtschreibfehlern und Groß- und Kleinschreibung).
abc164a.py
s, w = map(int, input().split())
if s > w:
print("safe")
else:
print("unsafe")
Problemstellung Takahashi und Aoki kämpfen gegen Monster. Takahashi-kuns Monster hat $ A $ an körperlicher Stärke und $ B $ an Angriffskraft. Aokis Monster hat $ C $ an körperlicher Stärke und $ D $ an Angriffskraft. Angriff in der Reihenfolge Takahashi-Kun → Aoki-Kun → Takahashi-Kun → Aoki-Kun → ... Angreifen bedeutet, die physische Stärke des Monsters deines Gegners um die Angriffsstärke deines Monsters zu verringern. Wenn Sie dies so lange tun, bis die physische Stärke eines Monsters 0 oder weniger wird, verliert derjenige, dessen physische Stärke zuerst 0 oder weniger wird, und derjenige, der nicht gewinnt. Geben Sie "Ja" aus, wenn Takahashi gewinnt, und "Nein", wenn er verliert.
Vorerst werde ich den Code veröffentlichen, den ich zuerst eingereicht habe.
Nachtrag: Python benötigt () für eine Weile nicht, so dass Sie "while True:" schreiben können, aber ich schreibe oft mit (), weil die Gewohnheit anderer Sprachen (Schweiß)
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
Wenn die physische Stärke von $ A $ und $ C $ extrem groß ist, kann ich natürlich keine Schleife ausführen, aber da die Einschränkung dieses Problems eine Ganzzahl von 100 oder weniger war, habe ich den Code ohne zu zögern genau als Problemsatz geschrieben. Es war. Auf Twitter wurde mir viel erzählt, aber ich bereue es nicht (denken Sie an Fehler als WA). Natürlich ging mir der folgende Code durch den Kopf, also habe ich ihn nach dem Ende des Wettbewerbs neu geschrieben.
abc164b.py
a, b, c, d = map(int, input().split())
if (c + b - 1) // b <= ( a + d - 1) // d:
print("Yes")
else:
print("No")
Es ist ein wenig mühsam, weil es notwendig ist, nach dem Dezimalpunkt aufzurunden, so dass die Berechnungsformel etwas ungeschickt ist, aber ~~ Wenn Sie in der Produktion schreiben, ist es sicherer, Ceil im Mathematikmodul ~~ zu verwenden.
Nachtrag: Wie von @DaikiSuyama kommentiert, scheint es sicherer, die Ceil-Funktion nicht zu verwenden, da anscheinend Fehler auftreten können. Ich schrieb "** Ist es sicher **", weil ich nicht wollte, dass die Formel kompliziert ist, aber es war nicht sicher. Ich habe bestätigt, dass dieses Problem behoben wird, aber mir wurde mitgeteilt, dass ABC046C aufgrund eines Fehlers nicht bestanden wurde. Diese Kommentare sind wirklich hilfreich. Vielen Dank, @DaikiSuyama. Ich muss auch die vergangenen Fragen richtig lösen.
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")
Problemstellung Ich habe $ N $ mal im Lotto gespielt und zum Zeitpunkt $ i $ ein Geschenk bekommen, dessen Typ durch die Zeichenfolge $ S_i $ dargestellt wird. Wie viele Arten von Preisen haben Sie erhalten?
Wenn Sie den Wörterbuchtyp verwenden, sind Sie fertig. Ich hatte Glück, weil ich alles in der Verarbeitung natürlicher Sprache verwendet habe. Wenn Sie len verwenden, ist Python sehr praktisch, da es nicht nur die Liste, sondern auch die Anzahl der Schlüssel im Diktat zurückgibt. Wenn Sie normalerweise die Häufigkeit des Auftretens von Wörtern zählen
python
word_dict = {}
for word in word_list:
if word in word_dict
word_dict[word] += 1
else:
word_dict[word] = 1
Ich habe dieses Problem jedoch nicht oft verwendet, sodass ich es leicht schreiben konnte.
Nachtrag: Ich verwende diesmal Diktat, aber wie die offizielle Erklärung besagt, kann es auch mit Set und Map implementiert werden.
abc161c.py
n = int(input())
dict_s = {}
for i in range(0, n):
s = input()
dict_s[s] = 1
print(len(dict_s))
Dies ist das Ende der ersten Hälfte. In der zweiten Hälfte wird das DEF-Problem erläutert. Nach dem Lösen von ABC blieb dieser Wettbewerb stecken und versuchte und irrte, aber am Ende endete er ohne "AC", und ich bedauere, dass er mit der Geschwindigkeit des Kurzstreckenlaufs zum C-Problem verglichen wurde. Schließlich möchte ich aus dem Rennen aussteigen, indem ich nach einem schwierigen Problem frage. Vielen Dank, dass Sie vorerst bis zum Ende der ersten Hälfte gelesen haben. Fortsetzung in der zweiten Hälfte.
Recommended Posts