Rückblick auf den AtCoder Beginner Contest 159 bis Frage E (Python)

Dies ist ein Übersichtsartikel für Anfänger von Wettkampfprofis.

Die Lösung, die ich hier schreibe, wurde geschrieben, während ich mir den Kommentar und die Beiträge anderer Leute ansah. Es ist möglicherweise nicht das, was Sie tatsächlich eingereicht haben.

A - The Number of Even Pairs Die Frage ist, die Anzahl der Kombinationen von N Bällen mit geraden Zahlen und M Bällen mit ungeraden Zahlen zu beantworten, für die die Summe gerade ist.

Die Antwort besteht einfach darin, die gerade Kombination $ N (N-1) / 2 $ und die ungerade Kombination $ M (M-1) / 2 $ zu kombinieren.


N, M = map(int, input().split())
print((N*(N-1))//2 + (M*(M-1))//2)

B - String Palindrome

Es ist ein Problem zu beurteilen, ob die angegebene Zeichenfolge ein "Kreissatz ist, der zwei Kreissätze kombiniert".

s = input()
n = len(s)
for i in range((n-1+3)//4):# +3 dient zum Aufrunden
    if not(s[i] == s[(n-1)//2-i-1] and s[(n+3)//2 + i-1] ==  s[-i-1] and s[i] == s[-i-1]):
        print('No')
        exit()
print('Yes')

Wenn ich mir andere Antworten und Erklärungen ansah, gab es eine sauberere Art zu schreiben.

s = input()
n = len(s)
sl = s[:n//2]
sr = s[n//2+1:]
if sl == sr and sr ==  sr[::-1]:
    print('Yes')
else:
    print('No')

Teilen Sie die Zeichenkette in links und rechts, und wenn die rechte Seite `sr``` eine Rezitation ist, ist das entsprechende` `sl``` auch eine Rezitation. Da sl``` und `` sr``` der gleiche Umstand sind, ist es ein Umstand, selbst wenn beide kombiniert werden. Es waren nur zwei Bedingungen erforderlich.

C - Maximum Volume Die Gesamthöhe, -breite und -höhe ist das Problem der Beantwortung des maximalen Volumens eines L-Quadrats.

Wenn height = width = height ist, ist das Volumen maximal, sodass die Länge von jedem $ L / 3 $ beträgt. Würfeln Sie einfach.

L = int(input())
print((L/3)**3)

Ich konnte nicht erklären, warum es das Maximum ist, wenn die Längen der Seiten übereinstimmen, deshalb werde ich vorerst eine mathematische Erklärung schreiben. Das Folgende ist die Formel für den additiven synergistischen Durchschnitt mit drei Variablen. $ {a+b+c\over 3}\geq (abc)^{1/3}$ Wenn man die Höhe als $ a $ und die Breite als $ b $ und $ c $ betrachtet, kann das Volumen des rechteckigen Körpers mit $ abc $ berechnet werden. $ \({a+b+c\over 3}\)^3\geq abc$ Wenn $ a = b = c $, gilt die Gleichheit dieser Formel, es ist also das maximale Volumen.

D - Banned K

Es ist ein Problem, darüber nachzudenken, wie viele Kombinationen dieselbe Zahl aus N Bällen mit darauf geschriebenen Zahlen auswählen sollen, mit Ausnahme der Bälle.

Ermitteln Sie zunächst die Gesamtzahl der Kombinationen $ S $ aus allen Bällen. Wenn von dort aus $ m $ Bälle mit der Zahl $ n $ vorhanden sind und Sie einen Ball mit der Zahl $ n $ herausnehmen, wird der Gesamtbetrag von $ S $ um $ m-1 $ reduziert. Die Zahl $ n $ wird auf jeden Ball angewendet, der herausgenommen und ausgegeben werden soll.

import collections
N = int(input())
li = list(map(int, input().split()))
cn = collections.Counter(li)
sumC = sum([n*(n-1)//2 for n in cn.values()])
for k in range(N):
    print(sumC-cn[li[k]] + 1)

E - Dividing Chocolate

Es ist eine Frage, wie oft geteilt werden muss, damit die Menge an weißer Schokolade in der Tellerschokolade unter einem bestimmten Wert liegt.

Ich gab auf, weil ich weder "die Idee der Erforschung" noch "wie man die Anzahl der weißen Pralinen in der Spaltung zählt" verstand.

Ich habe den Kommentar gesehen. Da es eine enge Bereichsspezifikation von $ H \ leq 10 $ gibt, kann die horizontale Unterteilung einfach sein, um alle $ 2 ^ {H-1} $ Straßen zu durchsuchen. Verwenden Sie "itertools.product ()" für eine vollständige Suche, um ein vollständiges Array der Länge H-1 mit 0s oder 1 zu erstellen. Die Suche ist damit in Ordnung.

Horizontal geteilte Pralinen werden in dem zweidimensionalen Array "SW" als eindimensionales Array gespeichert, das die Anzahl der weißen Pralinen vertikal zählt und von links gezählt wird. Wenn die Anzahl der Pralinen in einer Spalte die angegebene Anzahl "K" überschreitet, teilen Sie die Pralinen vertikal und setzen Sie die Anzahl auf 0 zurück. Damit können Sie auch Schokolade zählen. Wenn jedoch der Wert des eindimensionalen Arrays "K" überschreitet, ist es unmöglich, die Schokolade viele Male zu teilen, so dass die Situation von der Seitwärtsteilung wiederholt werden sollte.

Der Code sieht also so aus:

import itertools

H, W, K = map(int, input().split())
S = [input() for _ in range(H)]
ans = 1e4
for t in itertools.product([0, 1], repeat=H-1):
    cnt = t.count(1)
    SW = []
    tmp = [int(s) for s in S[0]]
    for i, c in enumerate(t):
        if c:
            SW.append(tmp)
            tmp = [int(s) for s in S[i+1]]
        else:
            tmp = [tmp[j] + int(S[i+1][j]) for j in range(W)]
    SW.append(tmp)
    H_ = len(SW)
    sums = [0] * H_
    if max(itertools.chain.from_iterable(SW)) > K:
        continue
    for w in range(W):
        sumtmp = [sums[i] + SW[i][w] for i in range(H_)]
        if max(sumtmp) > K:
            cnt += 1
            sums = [SW[i][w] for i in range(H_)]
        else:
            sums = sumtmp
    ans = min(ans, cnt)
print(ans)        

Dieser Artikel endet vorerst mit Frage E.

Recommended Posts

Rückblick auf den AtCoder Beginner Contest 159 bis Frage E (Python)
Rückblick auf den AtCoder Beginner Contest 163 bis Frage E (Python)
Rückblick auf den AtCoder Beginner Contest 164 bis Frage E (Python)
Rückblick auf den AtCoder Beginner Contest 162 bis Frage E (Python)
Rückblick auf den AtCoder Beginner Contest 154 bis Frage E (Python)
Rückblick auf den AtCoder Beginner Contest 153 bis Frage E (Python)
Rückblick auf den AtCoder Beginner Contest 160 bis Frage E (Python)
Rückblick auf den AtCoder Beginner Contest 167 bis Frage E (Python)
Rückblick auf den AtCoder Beginner Contest 157 bis Frage E (Python)
Rückblick auf den AtCoder Beginner Contest 161 bis Frage E (Python)
Rückblick auf den AtCoder Beginner Contest 155 bis Frage E (Python)
Rückblick auf den AtCoder Beginner Contest 156 bis Frage E (Python)
Rückblick auf den AtCoder Beginner Contest 166 bis Frage E (Python)
Rückblick auf den AtCoder Beginner Contest 165 bis Frage E (Python)
atcoder Review des Panasonic Programming Contest 2020, bis zu Frage E (Python)
Überprüfung des Atcoders ABC158 bis Frage E (Python)
AtCoder Beginner Contest 102 Rückblick auf frühere Fragen
AtCoder Beginner Contest 085 Rückblick auf frühere Fragen
AtCoder Beginner Contest 062 Rückblick auf frühere Fragen
AtCoder Beginner Contest 113 Rückblick auf frühere Fragen
AtCoder Beginner Contest 074 Rückblick auf frühere Fragen
AtCoder Beginner Contest 051 Rückblick auf frühere Fragen
AtCoder Beginner Contest 119 Rückblick auf frühere Fragen
AtCoder Beginner Contest 151 Rückblick auf frühere Fragen
AtCoder Beginner Contest 075 Rückblick auf frühere Fragen
AtCoder Beginner Contest 054 Rückblick auf frühere Fragen
AtCoder Beginner Contest 110 Rückblick auf frühere Fragen
AtCoder Beginner Contest 117 Rückblick auf frühere Fragen
AtCoder Beginner Contest 070 Rückblick auf frühere Fragen
AtCoder Beginner Contest 105 Rückblick auf frühere Fragen
AtCoder Beginner Contest 112 Rückblick auf frühere Fragen
AtCoder Beginner Contest 076 Rückblick auf frühere Fragen
AtCoder Beginner Contest 089 Rückblick auf frühere Fragen
AtCoder Beginner Contest 069 Rückblick auf frühere Fragen
AtCoder Beginner Contest 079 Rückblick auf frühere Fragen
AtCoder Beginner Contest 056 Rückblick auf frühere Fragen
AtCoder Beginner Contest 087 Rückblick auf frühere Fragen
AtCoder Beginner Contest 067 Rückblick auf frühere Fragen
AtCoder Beginner Contest 093 Rückblick auf frühere Fragen
AtCoder Beginner Contest 046 Rückblick auf frühere Fragen
AtCoder Beginner Contest 123 Überprüfung früherer Fragen
AtCoder Beginner Contest 049 Rückblick auf frühere Fragen
AtCoder Beginner Contest 078 Rückblick auf frühere Fragen
AtCoder Beginner Contest 081 Rückblick auf frühere Fragen
AtCoder Beginner Contest 047 Rückblick auf frühere Fragen
AtCoder Beginner Contest 060 Rückblick auf frühere Fragen
AtCoder Beginner Contest 104 Rückblick auf frühere Fragen
AtCoder Beginner Contest 057 Rückblick auf frühere Fragen
AtCoder Beginner Contest 121 Rückblick auf frühere Fragen
AtCoder Beginner Contest 126 Rückblick auf frühere Fragen
AtCoder Beginner Contest 090 Rückblick auf frühere Fragen
AtCoder Beginner Contest 103 Rückblick auf frühere Fragen
AtCoder Beginner Contest 061 Rückblick auf frühere Fragen
AtCoder Beginner Contest 059 Rückblick auf frühere Fragen
AtCoder Beginner Contest 044 Rückblick auf frühere Fragen
AtCoder Beginner Contest 083 Rückblick auf frühere Fragen
AtCoder Beginner Contest 048 Rückblick auf frühere Fragen
AtCoder Beginner Contest 124 Rückblick auf frühere Fragen
AtCoder Beginner Contest 116 Rückblick auf frühere Fragen
AtCoder Beginner Contest 097 Rückblick auf frühere Fragen
AtCoder Beginner Contest 088 Rückblick auf frühere Fragen