[AtCoder Erklärung] Kontrollieren Sie ABC164 A, B, C Probleme mit Python!

Ich werde erklären, wie man ** A, B, C Probleme ** des ** AtCoder Beginners Contest 164 ** mit ** Python 3 ** so sorgfältig wie möglich löst.

Ich möchte eine Lösung erklären, die die folgenden drei Punkte erfüllt, nicht nur eine Methode, die gelöst werden kann.

ABC164

Datum: 26.04.2020 (So) 21:00 ~ 26.04.2020 (So) 22:40 (100 Minuten) Eine Anzahl von Personen, die Fragen stellen: 11236

Performance AC Zeit Rangfolge Richtlinie
400 ABC- 29 Minuten 7198 Teeleistung
600 ABC- 18 Minuten 5854 Brown Rate bei 8 mal
800 ABC- 12 Minuten 4425 Grüne Leistung
1200 ABC- 5 Minuten 2081st Wasserleistung

(Referenz) Me: Performance 1625 ABCD-- 23:03 80 5. Platz </ font>

Ein Problem (11148 Personen AC)
Tu einfach, was du schreibst. Die Probe ist auch nett.
B-Problem (10415 AC)
Es ist einfacher, nicht verwirrt zu werden, wenn der Variablenname leicht zu verstehen ist.
C-Problem (9533 Personen AC)
Es gibt verschiedene Möglichkeiten, aber wenn Sie den eingestellten Typ verwenden, ist es eine Aufnahme.
D-Problem (1926 AC) [in diesem Artikel nicht erklärt]
Dies ist der Schwierigkeitsgrad des üblichen E-Problemlevels. Es kann nicht geholfen werden, wenn Sie es nicht lösen können.

Das D-Problem war ziemlich schwierig, so dass ich durch einfaches Lösen des C-Problems schnell eine Wasserleistung erbrachte. Ich denke, Sie haben das Gefühl, dass es wichtig ist, dies schnell und einfach zu tun.

ABC158A 『Sheep and Wolves』

** Problemseite **: A - Schafe und Wölfe ** Schwierigkeit **: ☆☆☆☆☆ ** Punkt **: Behandlung von if-Anweisungen, Behandlung von Grenzwerten

Es ist ganz einfach, genau das zu tun, was Sie schreiben.

Problemstellung

Problemstellung (faltbar)
![abc164a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595910/833c91bd-e833-edce-d1e8-2e9f532e4984.png)

Wie löst man

  1. Entschlüsseln Sie die Problemstellung

Schritt 1: Lesen Sie die Problemstellung

"Unsicher", wenn die Anzahl der Wölfe ** "größer oder gleich" ** ist, andernfalls "sicher".

Achten Sie bei der Beurteilung mit "if" auf den Umgang mit dem Grenzwert (der Zahl an der Grenze, an der sich die Beurteilung ändert). ** "Mehr als" **, also w> = s. Wenn die Anzahl der Wölfe ** "mehr" als die Anzahl der Schafe ** ist, dann ist "w> s".

Bitte, Beispiel 3 ist mit $ W = S $ "unsicher". Wenn dies erfolgreich ist, können Sie es mit Sicherheit einreichen.

Code

TU es einfach. Achten Sie darauf, "unsicher" und "sicher" nicht umzukehren oder Tippfehler oder Rechtschreibfehler zu machen. Ein Fehler kann zu einer Strafe von 5 Minuten führen. Überprüfen Sie daher vor dem Absenden, ob alle Proben passen, auch wenn dies einige Zeit dauert.

s, w = list(map(int, input().split()))

if w >= s:
    print("unsafe")
else:
    print("safe")

Wenn Sie in eine Zeile schreiben möchten, können Sie den "ternären Operator" verwenden. Ich benutze es nicht, weil es Fehler zu verursachen scheint.

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

ABC164B『Battle』

** Problemseite **: B --Battle ** Schwierigkeit **: ★ ☆☆☆☆ ** Punkt **: Umgang mit while, Entwicklung von Variablennamen

Es ist ein einfaches Spiel, bei dem Sie die HP des Gegners um den gleichen Betrag reduzieren können wie Ihre eigene Angriffskraft, wenn Sie angreifen. Takahashi ist der erste Spieler und Aoki ist der zweite Spieler.

Problemstellung

Problemstellung (faltbar)
![abc164b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595910/6d9fd7d6-4213-6b43-6fc9-b55fefbea2f6.png)

Wie löst man

  1. Überlegen Sie, was zu tun ist

Schritt 1: Überlegen Sie, was zu tun ist

Da $ A, B, C, D $ alle 100 oder weniger sind, können Sie es lösen, indem Sie es so simulieren, wie es ist. Wenn es sich um eine sehr große Zahl wie 5000 Billionen (tote Wörter) handelt, wird sie arithmetisch berechnet. (Es ist nicht wirklich wichtig, aber es gibt tatsächlich ein Problem mit 5000 Billionen in der Problemstellung)

Wenn der Variablenname so wie er ist in "a", "b", "c", "d" geändert wird, ist es schwierig zu verstehen, welche Variable was ist, und dies führt zu Verwirrung. Ich war während des Wettbewerbs verwirrt und las den Fragentext ungefähr fünfmal.

Sagen wir "tkhp", "tkat", "aohp", "aoat".

Code

Schreib das auch einfach. Verwenden Sie für eine solche Simulation "while True", um eine Endlosschleife zu erstellen, und wenn die Bedingungen erfüllt sind, verwenden Sie "break" zum Beenden.

tkhp, tkat, aohp, aoat = list(map(int, input().split()))

while True:
    aohp -= tkat
    if aohp <= 0:
        print("Yes")
        break

    tkhp -= aoat
    if tkhp <= 0:
        print("No")
        break

Übrigens, wenn Sie den Variablennamen als Problemstellung belassen, ist dies der folgende Code. Es ist ein Code, der Fehler hervorzurufen scheint. Sie können die Bedeutung von Variablennamen erkennen! (Selbstdisziplin)

while True:
    c -= b
    if c <= 0:
        print("Yes")
        break

    a -= d
    if a <= 0:
        print("No")
        break

ABC164C『gacha』

** Problemseite **: C - gacha ** Schwierigkeit **: ★★ ☆☆☆ ** Typ **: Verwendung des eingestellten Typs

Sie können die Bedeutung der Problemstellung leicht verstehen. Der Spaß hängt davon ab, wie Sie es implementieren.

Problemstellung

Problemstellung (faltbar)
![abc164c.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595910/6709cc42-fa2f-4b76-fe49-27305eb75547.png)

Dinge die zu tun sind

  1. Überlegen Sie, wie Sie fragen sollen

Schritt 1: Überlegen Sie, wie Sie fragen sollen

Es gibt verschiedene Möglichkeiten, die Anzahl der Typen zu ermitteln, aber der festgelegte Typ ist der einfachste.

Wenn Sie die Eingabe normalerweise als Listentyp empfangen und dann zu einem festgelegten Typ machen, verschwindet das doppelte Element (double). Da die Anzahl der Elemente des Mengen-Typs der Anzahl der Typen selbst entspricht, können Sie die Antwort mithilfe der Funktion len () finden.

Ich glaube nicht, dass Sie es verstehen können, selbst wenn es in Worten gesagt wird. Es ist nicht schwierig, wenn Sie sich ansehen, was passieren wird.

>>> s = ['apple', 'orange', 'apple']
>>> s_set = set(s)
>>> s_set
{'orange', 'apple'} #Es gibt zwei'apple'Wurde einer
>>> len(s_set)
2 # 'orange'Wann'apple'Es gibt zwei Arten.
>>> s = ['grape', 'grape', 'grape', 'grape', 'grape']
>>> s_set = set(s)
>>> s_set
{'grape'} #Es gibt 5'grape'Wurde einer
>>> len(s_set)
1 # 'grape'Es ist eine Art von.

Code

n = int(input())
s = [input() for _ in range(n)] #Ich erhalte Eingaben in einer Notation, die in einer Liste enthalten ist und ordentlich aussieht. Gleiches gilt für die for-Schleife.

ss = set(s) #Erstellen Sie einen festgelegten Typ von s. Dies ist ein schlechter Variablenname, aber es ist ein Funktionscode, also denke ich, dass es in Ordnung ist.
ans = len(ss) #Jetzt können Sie die Anzahl der Typen sehen.
print(ans)

Nur 3 Zeilen ohne Eingabe. Wenn Sie "print (len (set (s)))" verwenden, handelt es sich um eine Zeile. Wenn Sie jedoch nicht daran gewöhnt sind, versuchen Sie, nur eine Zeile pro Zeile zu erstellen.

Die Technik der Konvertierung in einen festgelegten Typ und das Ermitteln der Anzahl der Typen mit "len" wird sehr häufig verwendet. Denken Sie also daran.

Bonus (über Zähler)

Nicht relevant für dieses Problem, aber oft möchten Sie wissen, wie oft jedes Element aufgetreten ist.

In einem solchen Fall ist es einfacher, "aus Sammlungen Importzähler" zu schreiben und den Zählertyp zu verwenden. Ich benutze es so oft wie den eingestellten Typ.

Ich werde diesmal nicht erklären, wie man es benutzt. Wenn Sie es wissen wollen, schauen Sie es sich bitte an. Um kurz zu erklären, wie es aussieht, ist es ein praktischer Zähler mit verschiedenen Funktionen, die dem Diktattyp hinzugefügt werden.

Recommended Posts

[AtCoder Erklärung] Kontrollieren Sie ABC180 A, B, C Probleme mit Python!
[AtCoder Erklärung] Kontrollieren Sie ABC158 A, B, C Probleme mit Python!
[AtCoder Erklärung] Kontrollieren Sie ABC164 A, B, C Probleme mit Python!
[AtCoder Erklärung] Kontrollieren Sie ABC168 A, B, C Probleme mit Python!
[Erklärung zum AtCoder] Kontrollieren Sie die A-, B- und C-Probleme von ABC182 mit Python!
[AtCoder Erklärung] Kontrollieren Sie ABC184 A, B, C Probleme mit Python!
[Erklärung zum AtCoder] Kontrollieren Sie die A-, B-, (C), D-Probleme von ABC165 mit Python!
[Erklärung zum AtCoder] Kontrollieren Sie die A-, B-, C- und D-Probleme von ABC181 mit Python!
ABC127 A, B, C Erklärung (Python)
ABC126 A, B, C Erklärung (Python)
Fordern Sie AtCoder (ABC) 164 mit Python heraus! A ~ C Problem
Löse den Atcoder ABC176 (A, B, C, E) in Python
Löse ABC163 A ~ C mit Python
Löse ABC168 A ~ C mit Python
Löse ABC162 A ~ C mit Python
Löse ABC167 A ~ C mit Python
ABC128 A, B, C Kommentar (Python)
Löse ABC158 A ~ C mit Python
Löse ABC175 A, B, C mit Python
[AtCoder] Löse ABC1 ~ 100 Ein Problem mit Python
Löse AtCoder ABC168 mit Python (A ~ D)
[AtCoder] Lösen Sie ein Problem von ABC101 ~ 169 mit Python
AtCoder ABC 177 Python (A ~ E)
Löse AtCoder ABC166 mit Python
AtCoder ABC 178 Python (A ~ E)
ABC129 A, B, C Kommentar
AtCoder ABC 176 Python (A ~ E)
AtCoder ABC 182 Python (A ~ D)
AtCoder Anfängerwettbewerb 166 A Erklärung des Problems "A? C" (Python3, C ++, Java)
AtCoder Anfängerwettbewerb 174 B Problem "Entfernung" Erklärung (C ++, Python, Java)
AtCoder-Anfängerwettbewerb 177 B Problem "Teilzeichenfolge" Erläuterung (Python3, C ++, Java)
Löse ABC166 A ~ D mit Python
AtCoder Anfängerwettbewerb 167 Ein Problem "Registrierung" Erklärung (Python3, C ++, Java)
ABC166 in Python A ~ C Problem
Löse ABC036 A ~ C mit Python
Lösen mit Ruby und Python AtCoder ABC011 C Dynamische Planungsmethode
Vorlage AtCoder ABC 179 Python (A ~ E)
Löse ABC037 A ~ C mit Python
AtCoder-Anfängerwettbewerb 169 B Problem "Multiplikation 2" Erläuterung (Python3, C ++, Java)
AtCoder Anfängerwettbewerb 170 Ein Problem "Fünf Variablen" Erklärung (C ++, Python, Java)
[AtCoder-Kommentar] Gewinnen Sie mit Python das ABC165 C-Problem "Many Requirements"!
AtCoder Beginner Contest 169 Eine Erklärung des Problems "Multiplikation 1" (Python3, C ++, Java)
AtCoder Beginner Contest 176 Eine Erklärung des Problems "Takoyaki" (Python3, C ++, Java)
AtCoder Anfängerwettbewerb 175 B Problem "Making Triangle" Erklärung (C ++, Python3, Java)
AtCoder Anfängerwettbewerb 175 Ein Problem "Regenzeit" Erklärung (C ++, Python3, Java)
Lösen mit Ruby, Python und numpy AtCoder ABC054 B Matrixberechnung
Lösen mit Ruby, Perl, Java und Python AtCoder ABC 065 C-te Potenz
AtCoder-Anfängerwettbewerb 176 B Problem "Multiple of 9" Erläuterung (Python3, C ++, Java)
AtCoder Anfängerwettbewerb 174 Ein Problem "Klimaanlage" Erklärung (C ++, Python, Java)
[Python] [Erklärung] AtCoder Typischer DP-Wettbewerb: Ein Wettbewerb
Python> Schlüsselwortargumente> hoge (** {'a': 1, 'b': 2, 'c': 3})
Löse ABC165 A, B, D mit Python
AtCoder ABC 175 Python
AtCoder Anfängerwettbewerb 177 Eine Erklärung des Problems "Sei nicht zu spät" (Python3, C ++, Java)
Lösen mit Ruby, Perl, Java und Python AtCoder ABC 107 B String-Manipulation