A, B, D ont été résolus, mais C a expiré lorsque la solution est connue. Les 4 premiers achèvements n'ont pas été réalisés.
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)
Ecrivez.
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)
Écrivez ceci aussi.
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)
Je n'ai pas pu le résoudre dans le temps imparti. J'ai vite compris l'idée, mais je n'ai pas pu terminer la mise en œuvre et le temps était écoulé. Le lendemain, je me suis calmé et cela a été résolu. C'est un peu de code sale car la boucle for est quadruplée.
En bref, utilisez `numpy``` pour convertir
'.' `` en
0``` et
' # '
en` `1```. Faites-en une matrice de
0,1 ''. Et la politique est d'augmenter count '' lorsque
sum () '' de la matrice devient
K```.
Après tout, peindre en rouge est la même chose que peindre en blanc (= mettre l'élément de la matrice à 0), il semble donc que cela puisse être réalisé avec une tranche de numpy.
Après cela, pour chaque ligne et colonne de `` H x L '', considérez deux options, peignez en rouge (définissez l'élément de matrice sur 0) ou non.
Puisqu'il y a un choix entre la peinture et non la peinture, définissez un drapeau avec 0,1 '' C'est
itertools.product```` qui génère cela.
Résumé
Il est complété par. Je voulais le résoudre à temps.
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:
#Si même
end = (N - 2) // 2
answer = A[0] + (A[1:end+1] * 2).sum()
else:
#Si étrange
end = (N - 2) // 2
answer = A[0] + (A[1:end+1] * 2).sum() + A[end+1]
print(answer)
C'était facile pour D. Si vous pensez à cinq exemples concrets, vous pouvez voir les règles.
La politique est
――Il est préférable de visiter par ordre décroissant
La réponse est de mettre cela dans le code.
Recommended Posts