Ich habe in den letzten zwei Jahren programmiert (Hauptsprache: Python) und vor kurzem Atcoder gestartet und bin jetzt ein Aschecodierer. Da es sich um ein Memo handelt, ist die Qualität nicht so hoch, aber ich möchte ein Memo hinterlassen, das sich auf D- und E-Probleme sowie auf das Organisieren konzentriert. Bitte beachten Sie, dass der hier angezeigte Code Ihr eigener Code ist und möglicherweise nicht optimal ist.
Fertig in 2 Minuten. Meine Antwort
S, T = input().split()
A, B = map(int, input().split())
U = input()
if S == U:
A -= 1
else:
B -=1
print(A, B)
Fertig in 1 Minute. Meine Antwort
S = input()
print('x' * len(S))
Fertig in 2 Minuten. Ob die Elemente doppelt vorhanden sind oder nicht, kann durch Vergleichen von "len (Liste)" und "len (Menge)" festgestellt werden.
Meine Antwort
N = int(input())
A = list(map(int, input().split()))
if len(A) == len(set(A)):
print("YES")
else:
print("NO")
Wenn Sie die Summe eines bestimmten Abschnitts ermitteln möchten, können Sie die kumulative Summe verwenden, um sie mit explosiver Geschwindigkeit zu ermitteln. Bezüglich der kumulierten Summe Dieser Artikel-> Kann kumulative Summen schreiben, ohne nachzudenken! Es wird ausführlich in erklärt.
Als Merkmal der kumulierten Summe
Nehmen Sie sich O (N) O (N) Zeit für die Vorverarbeitung Die Speicherkapazität kann O (N) O (N) sein. Mit der Vorverarbeitung können Sie jede Anfrage mit O (1) O (1) mit explosiver Geschwindigkeit beantworten.
Meine Antwort
N, K = list(map(int, input().split()))
A = list(map(int, input().split()))
s = [0] * 1000000
for i in range(N):
s[i+1] = s[i] + A[i]
max_s = 0
for i in range(N):
if max_s < s[i+K] - s[i]:
max_s = s[i+K] - s[i]
print((max_s+K) / 2)
Verwenden Sie für eine solche Implementierung das Schiebefenster anstelle der kumulierten Summe.
N, K = map(int, input().split())
A = list(map(int, input().split()))
expect = [(e + 1) / 2 for e in A]
window = sum(expect[0:K])
max_s = window
for i in range(N - K):
window -= expect[i]
window += expect[i + K]
if window > max_s:
max_s = window
print(max_s)
Beachten Sie unten, was ich überprüft habe, weil ich es nicht lösen konnte.
Wenn Sie eine Technik namens Digit DP verwenden "Finden Sie die Anzahl der ganzen Zahlen zwischen 0 und N, die bestimmte Bedingungen erfüllen." "Finden Sie den Maximalwert einer Ganzzahl zwischen 0 und N, die eine bestimmte Bedingung erfüllt." Kann Probleme wie lösen. Referenzartikel-> Erklärung, die den juckenden Teil der Ziffer DP erreichen kann In den Worten dieses Artikels
Wenn die Ziffer, die Sie gerade prüfen, die i-te Ziffer von oben ist, ist das Flag, das bestimmt, ob sie kleiner als N ist, kleiner und es gibt j Ziffern ungleich Null, die zu zählende Variable Es sollte wie "dp [i] [kleiner] [j]" aussehen. Schreiben Sie unten.
Recommended Posts