Das erste Mal konnte ich das C-Problem mit ABC nicht lösen …….
Brechen Sie in 1 Minute durch. Schreiben Sie einfach.
a, b = map(int, input().split())
c, d = map(int, input().split())
print(a * d - b * c)
Brechen Sie in 3 Minuten durch. Schreiben Sie einfach.
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)
Ich konnte nicht durchbrechen. Mein Kopf wurde weiß.
Ich konnte nicht durchbrechen. Selbst im Eingabe- / Ausgabebeispiel liefen TLE und NaN nicht gut.
Ich habe angefangen, nachdem ich C und D aufgegeben hatte, also weiß ich nicht, wie viele Minuten es gedauert hat. Es sind sicherlich weniger als 56 Minuten. Es gab nichts, was schwer zu sehen schien, und ich habe es implementiert, weil ich dachte, dass es eine Falle gibt, aber nichts, was gefangen ist Es gab keine (lacht). Es schien gefährlich, Warp wiederholt zu versuchen, also habe ich es nur einmal versucht, aber das ist zu sichtbar und keine Falle (lacht).
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