AtCoder ABC175 Dies ist eine Zusammenfassung der Probleme des AtCoder Beginner Contest 175, der am Samstag, den 15.08.2018, in der Reihenfolge von Problem A unter Berücksichtigung der Berücksichtigung stattfand. 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 eine Aufzeichnung des Wetters in der Stadt AtCoder an einem Tag in Folge für 3 US-Dollar. Der Wetterrekord wird durch die $ 3 $ Längenzeichenfolge $ S $ dargestellt, und das $ i (1 \ leqq i \ leqq 3) $ Tageswetter ist sonnig, wenn der $ i $ Buchstabe "S", "R" ist. "Es hat damals geregnet. Finden Sie die maximale Anzahl aufeinanderfolgender Regentage.
Wie im Kommentar geschrieben, gibt es 3 Tage lang nur 8 Möglichkeiten. Sie können es also bestehen, wenn Sie es separat schreiben. Wenn Sie auf die Reihenfolge der Bedingungen achten, können Sie diese in den folgenden Fällen lösen.
abc175a.py
n = input()
if "RRR" in n:
print(3)
elif "RR" in n:
print(2)
elif "R" in n:
print(1)
else:
print(0)
Problemstellung Es gibt $ N $ Sticks mit den Nummern $ 1, ⋯, N $. Die Länge des Balkens $ (i (1 \ leqq i \ leqq N) $ beträgt $ L_i $. Wie viele davon sind $ 3 $ Stangen unterschiedlicher Länge, mit denen ein Dreieck hergestellt werden kann? Mit anderen Worten, finden Sie die Anzahl von $ 3 $ Paaren von ganzen Zahlen $ 1 \ leqq i <j <k \ leqq N $, die beide der folgenden $ 2 $ -Bedingungen erfüllen. ・ $ L_i, L_j, L_k $ sind alle unterschiedlich ・ Es gibt ein Dreieck mit einer Seitenlänge von $ L_i, L_j, L_k $.
Da die Bedingung, dass alle Seiten unterschiedlich sind, in Bezug auf die Bedingung, dass ein Dreieck gilt, einfach ist, existiert das Dreieck, wenn die Länge der $ 3 $ -Seite $ L_i <L_j <L_k $ ist, wenn $ L_i + L_j> L_k $. Wenn Sie beim Sortieren der $ N $ -Bücher zuerst $ 3 $ -Bücher aus $ N $ -Büchern auswählen, ist der Wert ganz rechts der größte Wert unter den ausgewählten $ 3 $ -Büchern. Da $ N $ 100 oder weniger beträgt, können Sie alle Kombinationen rechtzeitig überprüfen.
abc175b.py
n = int(input())
l_list = list(map(int, input().split()))
l_list.sort()
count = 0
for i in range(0, n - 2):
for j in range(i + 1, n - 1):
for k in range(j + 1, n):
a = l_list[i]
b = l_list[j]
c = l_list[k]
if a == b or b == c or c == a:
continue
if a + b > c:
count += 1
else:
break
print(count)
Problemstellung Takahashi, der auf einigen geraden Linien lebt, befindet sich jetzt an den Koordinaten $ X $. Von nun an beabsichtigt Takahashi, den Vorgang des Bewegens von $ D $ in die positive oder negative Richtung der Koordinaten genau $ K $ mal zu wiederholen. Genauer gesagt können Sie mit $ 1 $ Bewegung von den Koordinaten $ x $ zu $ x + D $ oder $ x - D $ wechseln. Herr Takahashi möchte sich bewegen, so dass der absolute Wert der Koordinaten nach nur $ K $ -Zeiten das Minimum ist. Finden Sie den minimal möglichen Wert als absoluten Wert der Koordinaten, nachdem Sie $ K $ mal verschoben haben.
Anfangs befindet es sich in der Koordinate $ X $, aber da der zu erhaltende Mindestwert der absolute Wert der Koordinate ist, stimmen die Antworten von $ X $ und $ -X $ überein. Wenn im Fall von $ 0 \ leqq X $ die Anzahl der Bewegungen $ K $ unbegrenzt ist, wird der Rest $ T1 $ durch Teilen von $ X $ durch $ D $ oder $ T2 durch Subtrahieren von $ D $ von $ T1 $ erhalten. Entweder $ ist die Antwort. (Ich möchte den absoluten Wert der Koordinaten reduzieren, daher ist es am besten, in der Nähe des Ursprungs hin und her zu gehen.) Zunächst wird bestimmt, ob $ T1 $ erreicht werden kann, und wenn es nicht erreicht werden kann, lautet die Antwort $ X $ abzüglich der Anzahl der Züge x $ D $. Wenn Sie $ T1 $ erreichen können, müssen Sie $ K $ mal bewegen. Berechnen Sie also die verbleibende Anzahl von Bewegungen aus der Anzahl der bisherigen Bewegungen und ob die verbleibende Anzahl von Bewegungen gerade oder ungerade ist, $ T1 $ $ T2 $ ist entschieden. Beachten Sie die Ausgabe, da $ T2 $ negativ ist.
abc175c.py
x, k, d = map(int, input().split())
if x < 0:
x *= -1
t1 = x % d
t2 = t1 - d
n = (x - t1) // d
if k < n:
print(x - k * d)
else:
n = k - n
if n % 2 == 0:
print(t1)
else:
print(-t2)
Dies ist das Ende der ersten Hälfte. Ich bin in den Sommerferien, aber ich bin damit beschäftigt, Antworten zu schreiben, weil das Papier unter bestimmten Bedingungen angenommen wird. Deshalb würde ich es gerne schreiben, wenn ich in der zweiten Hälfte Zeit habe. Vielen Dank für das Lesen bis zum Ende.
Recommended Posts