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

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.

A - Remaining Balls

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)

B - I miss you...

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))

C - Distinct or Not

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')

D - Dice in Line

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)

E - Almost Everywhere Zero

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 ... $ {}_N C _K \times 9^K $ Es gibt nur ... also? Ich wusste nicht, wie ich suchen sollte und gab auf. Diese Formel wird in den folgenden Antworten nicht verwendet.

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

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 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 072 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 127 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 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 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 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
AtCoder Beginner Contest 092 Rückblick auf frühere Fragen
AtCoder Beginner Contest 099 Rückblick auf frühere Fragen