La première fois, je n'ai pas pu résoudre le problème C avec ABC …….
Percer en 1 minute. Il suffit d'écrire.
a, b = map(int, input().split())
c, d = map(int, input().split())
print(a * d - b * c)
Percer en 3 minutes. Il suffit d'écrire.
N, X = map(int, input().split())
S = input()
result = X
for c in S:
if c == 'o':
result += 1
elif c == 'x':
if result != 0:
result -= 1
print(result)
Je n'ai pas pu percer, ma tête est devenue blanche.
Je n'ai pas pu percer. Même dans l'exemple d'entrée / sortie, TLE et NaN ne se sont pas bien déroulés.
J'ai commencé après avoir abandonné C et D, donc je ne sais pas combien de minutes cela a pris. C'est certainement moins de 56 minutes. Il n'y avait rien qui semblait difficile à voir, et je l'ai implémenté en pensant qu'il y avait un piège, mais rien de piégé Il n'y en avait pas (rires). Il me semblait dangereux d'essayer le warp à plusieurs reprises, donc je n'ai essayé qu'une seule fois, mais c'est trop visible et pas un piège (rires).
from collections import deque
INF = 10 ** 9
H, W = map(int, input().split())
a = [input() for _ in range(H)]
d = {}
for h in range(H):
for w in range(W):
c = a[h][w]
if c in 'SG':
d[c] = (h, w)
elif c in '.#':
continue
else:
if c in d:
d[c].append((h, w))
else:
d[c] = [(h, w)]
not_warped = {}
for c in 'abcdefghijklmnopqrstuvwxyz':
not_warped[c] = True
def move(h, w, p):
c = a[h][w]
if c == '#':
return
if t[h][w] > p:
t[h][w] = p
q.append((h, w))
t = [[INF] * W for _ in range(H)]
h, w = d['S']
t[h][w] = 0
q = deque([(h, w)])
while q:
h, w = q.popleft()
c = a[h][w]
p = t[h][w] + 1
if 'a' <= c <= 'z' and not_warped[c]:
for nh, nw in d[c]:
if t[nh][nw] > p:
t[nh][nw] = p
q.append((nh, nw))
not_warped[c] = False
if h != 0:
move(h - 1, w, p)
if h != H - 1:
move(h + 1, w, p)
if w != 0:
move(h, w - 1, p)
if w != W - 1:
move(h, w + 1, p)
h, w = d['G']
if t[h][w] == INF:
print(-1)
else:
print(t[h][w])
Recommended Posts