[PYTHON] AtCoderBeginnerContest172 Review & Summary (erste Hälfte)

AtCoder ABC172 Dies ist eine Zusammenfassung der Probleme des AtCoder Beginner Contest 172, die am Samstag, den 27.06.202020 aufgetreten sind, beginnend mit Problem A und unter Berücksichtigung der Überlegungen. Das erste Halbjahr befasst sich mit Fragen bis zu ABCD. Das Problem wird zitiert, aber bitte überprüfen Sie die Wettbewerbsseite für Details. Klicken Sie hier für die Wettbewerbsseite Offizieller Kommentar PDF

Problem A Calc

Problemstellung Die Ganzzahl $ a $ wird eingegeben. Geben Sie den Wert $ a + a ^ 2 + a ^ 3 $ aus.

abc172a.py


a = int(input())
print(a + a**2 + a**3)

Problem B Kleinere Änderung

Problemstellung Angesichts der Zeichenfolgen $ S, T $. Wenn Sie $ S $ durch Wiederholen der folgenden Operationen in $ T $ ändern, ermitteln Sie die Mindestanzahl von Operationen. Operation: Wählen Sie das $ 1 $ -Zeichen von $ S $ aus und schreiben Sie es mit einem anderen Zeichen neu

Ich habe mit der for-Anweisung überprüft, ob jedes Zeichen von vorne übereinstimmt.

abc172b.py


s = input()
t = input()
count = 0
for i in range(len(s)):
    if s[i] != t[i]:
        count +=1
print(count)

C Problem Tsuundoku

Problemstellung Es gibt zwei Schreibtische A und B. Schreibtisch A hat $ N $ Bücher und Schreibtisch B hat $ M $ Bücher, die vertikal gestapelt sind. Das Buch $ (1 \ leq i \ leq N) $, das derzeit auf Schreibtisch A an der $ i $ -ten Position von oben geladen ist, benötigt $ A_i $ Minuten zum Lesen, und Schreibtisch B befindet sich derzeit an der $ i $ -ten Position von oben. Das geladene Buch $ (1 \ leq i \ leq M) $ muss $ B_i $ lesen. Betrachten Sie die folgenden Aktionen. ・ Wählen Sie den Schreibtisch aus, an dem das Buch verbleibt, lesen Sie das Buch oben auf dem Schreibtisch und entfernen Sie es vom Schreibtisch. Wie viele Bücher können Sie lesen, wenn Sie diese Aktion wiederholen, damit die Gesamtreisezeit $ K $ nicht überschreitet? Ignorieren Sie die Zeit, die außer dem Lesen eines Buches benötigt wird.

Vorläufig dachte ich, ich würde es rekursiv lösen, aber es war klar, dass die Ausführung einige Zeit dauern würde, also schrieb ich den Code mit unterschiedlichem Einfallsreichtum. Ich wollte in der Lage sein, so einfach zu schreiben, indem ich den Referenzcode von Python in die Erklärung einbezog.

abc172c.py


n, m, k = map(int, input().split())
a_list = list(map(int, input().split()))
b_list = list(map(int, input().split()))
new_a_list = [[0, 0]]
a_sum = 0
for i in range(0, n):
    a_sum += a_list[i]
    if a_sum <= k:
        new_a_list.append([i + 1, a_sum])
    else:
        break
best = len(new_a_list) - 1
b_sum = 0
a_sum = new_a_list[-1][1]
a_count = new_a_list[-1][0]
flag = 1
for i in range(0, m):
    b_sum += b_list[i]
    while True:
        if b_sum <= k - a_sum:
            if best < i + 1 + a_count:
                best = i + 1 + a_count
            break
        if a_count == 0:
            flag = 0
            break
        a_count -= 1
        a_sum = new_a_list[-(len(new_a_list) - a_count)][1]
    if flag == 0:
        break
print(best)

D Problem Summe der Teiler

Problemstellung Sei $ f (X) $ die Anzahl der positiven Brüche von $ X $ für die positive ganze Zahl $ X $. Wenn eine positive ganze Zahl $ N $ gegeben ist, finden Sie $ \ sum_ {K = 1} ^ {N} K × f (K) $.

Überwältigender Mangel an mathematischen Fähigkeiten (Schweiß) Ich konnte es nicht lösen, also konnte ich es lösen, indem ich implementierte, was in der Erklärung geschrieben stand.

abc172d.py


n = int(input())
total = 0
for j in range(1, n + 1):
    x = j
    y = n // x
    total += y * (y + 1) * x // 2
print(total)

Die Implementierung war einfach, aber ich konnte mir das nicht vorstellen, und das Ausführungszeitlimit: 3 Sekunden wurde an erster Stelle übersehen. (Ich denke nicht, dass es gelöst werden kann, auch wenn es nicht übersehen wird)

Dies ist das Ende der ersten Hälfte. Vielen Dank für das Lesen bis zum Ende der ersten Hälfte.

Die zweite Hälfte wird das EF-Problem erklären, aber ich glaube nicht, dass ich rechtzeitig einen Artikel schreiben kann (Schweiß).

Recommended Posts

AtCoderBeginnerContest164 Review & Summary (erste Hälfte)
AtCoderBeginnerContest169 Review & Summary (erste Hälfte)
AtCoderBeginnerContest174 Review & Summary (erste Hälfte)
AtCoderBeginnerContest173 Review & Summary (Erste Hälfte)
AtCoderBeginnerContest165 Review & Summary (erste Hälfte)
AtCoderBeginnerContest170 Review & Summary (erste Hälfte)
AtCoderBeginnerContest167 Review & Summary (erste Hälfte)
AtCoderBeginnerContest177 Review & Summary (erste Hälfte)
AtCoderBeginnerContest168 Review & Summary (erste Hälfte)
AtCoderBeginnerContest178 Review & Summary (erste Hälfte)
AtCoderBeginnerContest171 Review & Summary (erste Hälfte)
AtCoderBeginnerContest161 Review & Summary (erste Hälfte)
AtCoderBeginnerContest172 Review & Summary (erste Hälfte)
AtCoderBeginnerContest176 Review & Summary (erste Hälfte)
AtCoderBeginnerContest178 Review & Summary (zweite Hälfte)
AtCoderBeginnerContest161 Review & Summary (zweite Hälfte)
AtCoderBeginnerContest164 Review & Summary (zweite Hälfte)
AtCoderBeginnerContest176 Review & Summary (zweite Hälfte)
AtCoderBeginnerContest168 Review & Summary (zweite Hälfte)
AtCoderBeginnerContest169 Review & Summary (zweite Hälfte)
AtCoderBeginnerContest166 Review & Summary (zweite Hälfte)
AtCoderBeginnerContest171 Review & Summary (zweite Hälfte)
AtCoderBeginnerContest174 Review & Summary (zweite Hälfte)
AtCoderBeginnerContest173 Review & Summary (zweite Hälfte)
AtCoderBeginnerContest177 Review & Summary (zweite Hälfte)
AtCoderBeginnerContest181 Überprüfung & Zusammenfassung
AtCoderBeginnerContest179 Review & Zusammenfassung
Django Girls Tutorial Zusammenfassung Erste Hälfte
AtCoder Rückblick auf frühere Fragen (erste Hälfte von 12 / 8,9)