AtCoder ABC 182 Python (A ~ D)

Zusammenfassung

A, B, C gelöst. D ist einen Schritt weiter. E hat den Problemsatz in kürzester Zeit gelesen, aber es war ein überraschend einfaches Problem, daher war es möglicherweise in Ordnung, E zuerst zu lösen.

Problem

https://atcoder.jp/contests/abc182

A. twiblr image.png

Antworten
A, B = map(int, input().split())

max_follow = 2 * A + 100
answer = max_follow - B
print(answer)

Schreib das einfach.

B. Almost GCD image.png

Antworten
N = int(input())
A = list(map(int, input().split()))

max_gcd = 0
answer = 0
for i in range(2, 1000+1):
    count = 0
    for a in A:
        if a % i == 0 and a >= i:
            count += 1
    if count >= max_gcd:
        answer = i
        max_gcd = count

print(answer)

Dies ist im Grunde auch nur geschrieben, aber die Implementierung ist für das B-Problem etwas kompliziert.

C. To 3 image.png

Antworten
from itertools import combinations

N = list(map(int, str(int(input()))))
k = len(N)

for i in reversed(range(1, k+1)):
    for C in combinations(N, i):
        if sum(C) % 3 == 0:
            print(k - i)
            exit()

print(-1)

Bei Zahlen, die ein Vielfaches von 3 sind, können Sie testen, ob die Summe jeder Ziffer ein Vielfaches von 3 ist. Da Sie alle Möglichkeiten auf eingeschränkte Weise ausprobieren können, wählen Sie aus jeder Ziffer in der Kombination eine beliebige Zahl aus und versuchen Sie, ob die Summe durch 3 geteilt werden kann.

D. Wandering image.png

Antwort (2 WA)
import numpy as np

N = int(input())
A = np.array(list(map(int, input().split())))
cumA = np.cumsum(A)
cumA = np.append(cumA, 0)

now = 0
max_list = []
max_point = 0
max_index = 0
for i, cum_a in enumerate(cumA):
    now += cum_a
    if now >= max_point:
        max_point = now
        max_index = i
        max_list.append((max_point, max_index))

use_max_index = []
for point, index in max_list:
    if point == max_point:
        use_max_index.append(index)


answer = 0
for max_index in use_max_index:
    # max_Index und max_index+Betrachten Sie 1 und übernehmen Sie die größere
    # max_Bei Verwendung von Index
    answer_1 = max_point - cumA[max_index-1]
    count = 0
    add_amount = 0
    for i in range(max_index):
        count += A[i]
        add_amount = max(add_amount, count)

    answer_1 += add_amount

    # max?index+Bei Verwendung von 1
    answer_2 = max_point
    count_2 = 0
    add_amount_2 = 0
    if max_index <= N-1:
        for i in range(max_index+1):
            count_2 += A[i]
            add_amount_2 = max(add_amount_2, count_2)

        answer_2 += add_amount_2

    answer = max(answer, answer_1, answer_2)

print(answer)

Ich dachte zu viel nach, der Code wurde lang und ich konnte keine zwei WAs bekommen.

Antwort (AC zu einem späteren Zeitpunkt)
N = int(input())
A = list(map(int, input().split()))

cumA = A[:]
for i in range(1, N):
    cumA[i] += cumA[i-1]

max_cumA = cumA[:]
for i in range(1, N):
    max_cumA[i] = max(max_cumA[i], max_cumA[i-1])

now_point = 0
max_point = 0
for i in range(N):
    max_point = max(max_point, now_point + max_cumA[i])
    now_point += cumA[i]

print(max_point)

Dieses Problem ist ohne Berücksichtigung der Einschränkungen einfach, aber es war schwierig, den Rechenaufwand zu reduzieren. Ich erkannte schnell, dass die Politik der Reduzierung des Rechenaufwands die kumulierte Summe war, aber ich konnte sie nicht lösen, weil ich unterwegs verwirrt war.

Wenn Sie ruhig denken,

  1. Nehmen Sie die kumulative Summe (cumA)
  2. Nehmen Sie eine Liste von max bis zu jedem Index der kumulativen Summe (max_cumA)
  3. Verwenden Sie max_cumA, um den maximalen Reichweitenpunkt (max_point) zu aktualisieren.

Ich habe es endlich sauber gelöst. Ich dachte, dass der Sinn dieses Problems darin bestand, "eine andere Idee zu nehmen, nachdem man die kumulative Summe genommen hat".

Recommended Posts

AtCoder ABC 182 Python (A ~ D)
Löse AtCoder ABC168 mit Python (A ~ D)
AtCoder ABC 177 Python (A ~ E)
AtCoder ABC 178 Python (A ~ E)
AtCoder ABC 176 Python (A ~ E)
AtCoder ABC 174 Python
AtCoder ABC 175 Python
Löse ABC166 A ~ D mit Python
Vorlage AtCoder ABC 179 Python (A ~ E)
[AtCoder] Löse ABC1 ~ 100 Ein Problem mit Python
Löse ABC165 A, B, D mit Python
[AtCoder] Lösen Sie ein Problem von ABC101 ~ 169 mit Python
Fordern Sie AtCoder (ABC) 164 mit Python heraus! A ~ C Problem
Löse AtCoder ABC166 mit Python
Atcoder ABC164 A-C in Python
Atcoder ABC167 A-D in Python
Löse ABC175 D in Python
Atcoder ABC165 A-D in Python
Atcoder ABC166 A-E in Python
Atcoder ABC169 A-E in Python
AtCoder ABC177 A-D mit Python
atCoder 173 Python
Löse den Atcoder ABC176 (A, B, C, E) in Python
AtCoder ABC177
[Erklärung zum AtCoder] Kontrollieren Sie die A-, B-, (C), D-Probleme von ABC165 mit Python!
[AtCoder-Erklärung] Kontrollieren Sie die A-, B-, C- und D-Probleme von ABC183 mit Python!
[Erklärung zum AtCoder] Kontrollieren Sie die A-, B-, C- und D-Probleme von ABC181 mit Python!
Löse ABC163 A ~ C mit Python
ABC127 A, B, C Erklärung (Python)
ABC166 in Python A ~ C Problem
Löse den Atcoder ABC169 A-D mit Python
Löse ABC168 A ~ C mit Python
Löse ABC036 A ~ C mit Python
AtCoder ABC 114 C-755 mit Python3 gelöst
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
ABC126 A, B, C Erklärung (Python)
Löse ABC037 A ~ C mit Python
[Python] Jetzt ein grüner Codierer ~ [AtCoder]
AtCoder ABC155 Problem D Pairs Review Note 2 NumPy und Python
Lösen mit Ruby und Python AtCoder ABC178 D Dynamische Planungsmethode
Lösen mit Ruby und Python AtCoder ABC151 D Suche nach Breitenpriorität
Lösen mit Ruby und Python AtCoder ABC133 D Kumulative Summe
[AtCoder Erklärung] Kontrollieren Sie ABC158 A, B, C Probleme mit Python!
Lösen mit Ruby und Python AtCoder ABC138 D Benachbarte Liste
AtCoder ABC168 Ein in Ruby und Python gelöster Fallausdruck
[AtCoder Erklärung] Kontrollieren Sie ABC164 A, B, C Probleme mit Python!
[AtCoder Erklärung] Kontrollieren Sie ABC168 A, B, C Probleme mit Python!
Anfänger ABC154 (Python)
Anfänger ABC156 (Python)
Löse ABC175 A, B, C mit Python
Atcoder ABC60 D - Einfache Rucksack-Separatlösung
ABC 157 D - Lösungsvorschläge für Freunde in Python!
[Python] [Erklärung] AtCoder Typischer DP-Wettbewerb: Ein Wettbewerb
Python-Anfänger Atcoder memo @ Keyence 2020, ABC-Problem