Dies ist ein Übersichtsartikel für Anfänger von Wettkampfprofis.
Die Lösung, die ich hier schreibe, wird geschrieben, während ich mir den Kommentar und die Beiträge anderer Leute ansehe. Es ist möglicherweise nicht das, was Sie tatsächlich eingereicht haben.
Bei zwei Arten von Zeichenketten und der Anzahl der dazugehörigen Bälle ist es ein Problem, einen der angegebenen Bälle herauszunehmen und dann jede Zahl auszugeben.
Der Punkt ist, dass die Eingabe "U" so angegeben wird, dass sie mit jeder Zeichenfolge übereinstimmt.
S, T = input().split()
A, B = map(int, input().split())
U = input()
if U == S: A -= 1
else: B -= 1
print(A, B)
Dies ist ein Problem, um die angegebene Zeichenfolge durch 'x' zu ersetzen und auszugeben.
Gibt x für die Anzahl der eingegebenen Zeichen zurück.
S = input()
print("x" * len(S))
Das Problem besteht darin, das Eingabearray auf Duplikate zu überprüfen.
Ich habe die Array-Länge ohne Duplizierung überprüft, indem ich sie in den Set-Typ eingefügt habe. Beachten Sie, dass die Ausgabe "JA" anstelle von "Ja" ist (ein Verlust).
N = int(input())
A = list(input().split())
if len(set(A)) == N:
print('YES')
else:
print('NO')
Es ist ein Problem, den erwarteten Wert zu beantworten, indem K Würfel mit benachbarten Zahlen aus den Würfeln extrahiert werden, deren Maximalwert $ p_i $ ist.
Erwartete Werte sind unabhängige Werte für jeden Würfel, sodass Addition und Subtraktion möglich sind. Finden Sie zuerst den erwarteten Wert jedes Würfels und überschreiben Sie den Maximalwert jedes Würfels.
Danach habe ich beim Verschieben des Index nach dem Maximalwert gesucht (Verringern des Ausgangswerts durch Verschieben und Erhöhen des hinzugefügten Werts).
N, K = map(int, input().split())
P = list(map(int, input().split()))
P = [(1+p)/2 for p in P]
tmp = sum(P[:K])
maxV = tmp
for i in range(N-K):
tmp += P[i+K] - P[i]
maxV = max(maxV, tmp)
print(maxV)
Die Frage ist, die Anzahl der N-stelligen Zahlen, die K-Zahlen von 1 bis 9 enthalten können, in Dezimalschreibweise zu beantworten.
Die Zahl, die die Zahlen von 1 bis N erfüllt 999 ...
Ich habe den Kommentar gesehen. Es scheint einen Algorithmus namens Digit DP zu verwenden. Ich habe die Ziffer DP unter Bezugnahme auf hier gelernt.
Erstellen Sie ein dreidimensionales Array wie dieses.
dp[i][smaller][k]
Hier ist "i" die Anzahl der Ziffern, die mit dem linken Ende als 1 gezählt werden (ich denke, es gibt eine weitere 0. Ziffer mit dem Wert 0 auf der linken Seite), und "kleiner" ist der Maximalwert, den die Ziffern bis zu diesem Wert annehmen können, wenn er 1 ist. Nein, k
steht für die Anzahl der Zahlen ungleich Null, die bis zu dieser Ziffer erschienen sind.
Der folgende Code zählt nach diesen Regeln von links. Eine ausführliche Erklärung des Prozesses ist umständlich, daher werde ich darauf verzichten.
Ich ging daran vorbei.
N = [0] + list(map(int, input()))
N = [0] + list(map(int, input()))
K = int(input())
n = len(N)
DP = [
[[0] * (K+2) for _ in range(2)] for _ in range(n)
]
#0. Ziffer(0)Nimmt den Maximalwert mit k=Es gibt ein Element von 0.
DP[0][0][0] = 1
for i in range(1, n):
for k in range(K+1):
if N[i] != 0:
DP[i][0][k+1] += DP[i-1][0][k]
DP[i][1][k] += DP[i-1][0][k]
DP[i][1][k+1] += DP[i-1][0][k] * (N[i] - 1)
else:
DP[i][0][k] += DP[i-1][0][k]
DP[i][1][k] += DP[i-1][1][k]
DP[i][1][k+1] += DP[i-1][1][k] * 9
print(DP[n-1][1][K] + DP[n-1][0][K])
Das ist alles für diesen Artikel.
Recommended Posts