A, B, D wurden gelöst, aber C hat eine Zeitüberschreitung, wenn die Lösung bekannt ist. Die ersten 4 Abschlüsse wurden nicht erreicht.
https://atcoder.jp/contests/abc173/tasks/abc173_a
A. Payment
import math
N = int(input())
m = math.ceil(N / 1000)
answer = m * 1000 - N
print(answer)
Einfach schreiben.
B. Judge Status Summary
results = {'AC': 0, 'WA': 0, 'TLE': 0, 'RE': 0}
N = int(input())
for _ in range(N):
result = input()
results[result] += 1
for k, v in results.items():
print(k, 'x', v)
Schreib das auch einfach.
C. H and V
import itertools
import numpy as np
H, W, K = map(int, input().split())
temp = []
for _ in range(H):
C = list(input())
A = [c.replace('.', '0') for c in C]
A = [a.replace('#', '1') for a in A]
A = list(map(lambda x: int(x), A))
temp.append(A)
C = np.array(temp)
count = 0
l = [0, 1]
wide = itertools.product(l, repeat=W)
for w in wide:
hight = itertools.product(l, repeat=H)
for h in hight:
copy_C = C.copy()
for num, i in enumerate(w):
if i == 1:
copy_C[:, num-1] = 0
for num2, j in enumerate(h):
if j == 1:
copy_C[num2-1, :] = 0
if copy_C.sum() == K:
count += 1
print(count)
Ich konnte es nicht innerhalb des Zeitlimits lösen. Ich verstand die Idee schnell, konnte aber die Implementierung nicht abschließen und die Zeit war abgelaufen. Am nächsten Tag beruhigte ich mich und es wurde gelöst. Es ist ein wenig schmutziger Code, weil die for-Schleife vervierfacht ist.
Kurz gesagt, verwenden Sie `numpy```, um
'.' `` in
0``` und
# #
`in 1
zu konvertieren Machen Sie es eine Matrix von `` 0,1```. Und die Richtlinie besteht darin, "count" zu erhöhen, wenn "sum ()" der Matrix zu "K" wird.
Immerhin ist das Malen in Rot dasselbe wie das Malen in Weiß (= Setzen des Matrixelements auf 0), so dass es anscheinend mit einem Stück Numpy realisiert werden kann.
Betrachten Sie danach für jede Zeile und Spalte von `` `H x W``` zwei Auswahlmöglichkeiten: Malen Sie in Rot (setzen Sie das Matrixelement auf 0) oder nicht.
Da Sie zwischen Malen und Nicht-Malen wählen können, setzen Sie eine Flagge mit `0,1```. Es ist
`itertools.product````, das dies erzeugt.
Zusammenfassung
`0,1``` --Flag mit
`itertools.product```` in jeder Zeile und SpalteEs ist abgeschlossen mit. Ich wollte es rechtzeitig lösen.
D. Chat in a Circle
import numpy as np
N = int(input())
A = list(map(int, input().split()))
A = sorted(A, reverse=True)
A = np.array(A)
if N % 2 == 0:
#Wenn auch
end = (N - 2) // 2
answer = A[0] + (A[1:end+1] * 2).sum()
else:
#Wenn ungerade
end = (N - 2) // 2
answer = A[0] + (A[1:end+1] * 2).sum() + A[end+1]
print(answer)
Es war leicht für D. Wenn Sie an fünf konkrete Beispiele denken, können Sie die Regeln sehen.
Die Politik ist
――Es ist am besten, in absteigender Reihenfolge zu besuchen
Die Antwort ist, dies in den Code einzufügen.
Recommended Posts