Es ist kostenlos und Chokudai sagte, dass ich möchte, dass Sie es erhalten, also habe ich im Gegensatz zu den letzten beiden Malen an der realen Sache teilgenommen. Das Ergebnis liegt mit 70 Punkten dazwischen. Das erste Mal sind 64 Punkte, das zweite Mal sind es 76 Punkte Weil es ein Punkt ist, ist es nur in der Mitte. Ich habe es am frühen Morgen wie die letzten zwei Male gemacht, aber da ich 3 Stunden geschlafen habe, konnte ich nicht anders, als von der Mitte aus schläfrig zu sein. Vielleicht war das der Grund, warum es viele WAs gab. Ich denke den Rest, aber ich denke es ist okay, weil sogar ein erfrischender Kopf gelöst werden kann und es nur noch eine Frage ist.
Brechen Sie in 2 Minuten durch. Schreiben Sie einfach.
s = input()
t = input()
if s == t:
print('same')
elif s.lower() == t.lower():
print('case-insensitive')
else:
print('different')
Es bricht in 10 ½ Minuten durch. Es ist ziemlich schwierig, obwohl es ein B-Problem ist! Zuerst nimmt es viel Zeit in Anspruch, weil die Person, die die Yukicoder-Formel gelöst hat, früh missverstanden hat, dass es der Typ mit einer hohen Punktzahl war.
N, M, Q = map(int, input().split())
score = [N] * (M + 1)
answered = [[False] * (M + 1) for _ in range(N + 1)]
for _ in range(Q):
s = list(map(int, input().split()))
if s[0] == 1:
t = 0
for i in range(1, M + 1):
if answered[s[1]][i]:
t += score[i]
print(t)
elif s[0] == 2:
score[s[2]] -= 1
answered[s[1]][s[2]] = True
Durchbruch in 13,5 Minuten. TLE2, WA1. C Es ist ein Problem, aber wenn ich es naiv schreibe, TLE !? Während Sie einen Fehler machen und WA, AC essen.
Erläuterung PDF-Referenzimplementierung, setrecursionlimit bedeutungslos, ich bin nicht sicher, ob ich sys.stdin.buffer.readline anstelle von sys.stdin.readline verwende, a * r ** (n -1)
Ist maximal 10 9 + 9 29 </ sup> </ sup>, aber ich frage mich, ob es gut ist. O (log N </ i>) Ich frage mich, ob ich das Schreiben vermeiden möchte.
A, R, N = map(int, input().split())
result = A
a = R
b = N - 1
while b != 0 and result <= 1000000000:
if b & 1 != 0:
result *= a
a *= a
b >>= 1
if result > 1000000000:
print('large')
else:
print(result)
Es brach in 9,5 Minuten durch. Es war nicht allzu schwierig, weil ich einfach jeden Charakter ausgeschnitten und abgeglichen habe.
N = int(input())
s = [input() for _ in range(5)]
a = [
'.###..#..###.###.#.#.###.###.###.###.###.',
'.#.#.##....#...#.#.#.#...#.....#.#.#.#.#.',
'.#.#..#..###.###.###.###.###...#.###.###.',
'.#.#..#..#.....#...#...#.#.#...#.#.#...#.',
'.###.###.###.###...#.###.###...#.###.###.'
]
result = []
for i in range(N):
t = [s[j][i * 4:(i + 1) * 4] for j in range(5)]
for j in range(10):
for k in range(5):
if t[k] != a[k][j * 4:(j + 1) * 4]:
break
else:
result.append(j)
break
print(''.join(str(i) for i in result))
Brechen Sie in 8,5 Minuten durch. Selbst wenn ich die Problembeschreibung lese, weiß ich nicht, ob sich die Umgebungsfarbe ändert, wenn ich die Farbe des laufenden Sprinklers ändere, aber ich dachte, ich sollte sie ändern, wenn sie WA wird, und sende sie AC. Unter diesem Gesichtspunkt wäre es ein Problem, wenn die laufenden Sprinkler nebeneinander liegen würden, sodass sie tatsächlich starten und stoppen und dann die nächste Abfrage. Es scheint, dass die Links bereits viele Male geschrieben wurden und es keinen Grund zur Sorge gibt.
N, M, Q = map(int, input().split())
links = [[] for _ in range(N + 1)]
for _ in range(M):
u, v = map(int, input().split())
links[u].append(v)
links[v].append(u)
c = [0] + list(map(int, input().split()))
for _ in range(Q):
s = list(map(int, input().split()))
if s[0] == 1:
x = s[1]
print(c[x])
for y in links[x]:
c[y] = c[x]
if s[0] == 2:
x, y = s[1:]
print(c[x])
c[x] = y
Durchbruch in 40 und eine halbe Minute. WA2. Ich habe vergessen, -1 auszugeben, wenn es nicht erreichbar war, und unendlich auszugeben. Von den anderen 6 Bewegungsarten wurden nur 4 Arten von Auf, Ab, Links und Rechts implementiert. Ich habe meine Zeit verschwendet, weil ich das Eingabebeispiel nicht erhalten konnte. Nun, es ist nicht so schwierig, weil es eine Suche mit Breitenpriorität ist, die mich darüber nachdenken lässt, wie oft ich es schreiben werde. −200 ≤ x i </ sub>, y i </ sub>, X, Y ≤ 200 Wenn Sie es jedoch zu einem Leerzeichen machen, ist es am Ende unmöglich, neben dem Hindernis vorbeizukommen, aber es ist unpassierbar. Beachten Sie, dass Sie oben, unten, links und rechts nacheinander verteilen müssen.
from collections import deque
INF = float('inf')
N, X, Y = map(int, input().split())
t = [['.'] * 403 for _ in range(403)]
for _ in range(N):
x, y = map(int, input().split())
t[y + 201][x + 201] = '#'
d = [[INF] * 403 for _ in range(403)]
d[0 + 201][0 + 201] = 0
q = deque([(0, 0)])
while q:
y, x = q.popleft()
i, j = y + 201, x + 201
if i + 1 < 403 and j - 1 >= 0 and t[i + 1][j - 1] != '#' and d[i + 1][j - 1] > d[i][j] + 1:
d[i + 1][j - 1] = d[i][j] + 1
q.append((y + 1, x - 1))
if i + 1 < 403 and j + 1 < 403 and t[i + 1][j + 1] != '#' and d[i + 1][j + 1] > d[i][j] + 1:
d[i + 1][j + 1] = d[i][j] + 1
q.append((y + 1, x + 1))
if i - 1 >= 0 and t[i - 1][j] != '#' and d[i - 1][j] > d[i][j] + 1:
d[i - 1][j] = d[i][j] + 1
q.append((y - 1, x))
if i + 1 < 403 and t[i + 1][j] != '#' and d[i + 1][j] > d[i][j] + 1:
d[i + 1][j] = d[i][j] + 1
q.append((y + 1, x))
if j - 1 >= 0 and t[i][j - 1] != '#' and d[i][j - 1] > d[i][j] + 1:
d[i][j - 1] = d[i][j] + 1
q.append((y, x - 1))
if j + 1 < 403 and t[i][j + 1] != '#' and d[i][j + 1] > d[i][j] + 1:
d[i][j + 1] = d[i][j] + 1
q.append((y, x + 1))
if d[Y + 201][X + 201] == INF:
print(-1)
else:
print(d[Y + 201][X + 201])
Brechen Sie in 40,5 Minuten durch. WA4. Eine Katastrophe, weil es ein Problem ist, Zeichen aus jeder Zeile der Matrix zu nehmen und ein Rundschreiben zu erstellen, aber das Missverständnis, dass es ein Problem ist, ein Rundschreiben mit allen Zeichen in der Matrix zu erstellen. Ich denke, Sie können es lösen, wenn Sie wissen.
N = int(input())
a = [input() for _ in range(N)]
t = ''
for i in range(N // 2):
u = list(set(a[i]) & set(a[N - 1 - i]))
if len(u) == 0:
print(-1)
exit()
t += u[0]
if N % 2 == 0:
print(t + t[::-1])
else:
print(t + a[N // 2][0] + t[::-1])
Es bricht in 27,5 Minuten durch. Ich erinnerte mich an ABC134E - Sequenzzerlegung.
N, M = map(int, input().split())
a = list(map(int, input().split()))
eater = [-1] * M
eater[0] = 1
t = [-1] * N
t[0] = a[0]
for i in range(1, M):
ng = -1
ok = N
while abs(ng - ok) > 1:
m = (ok + ng) // 2
if a[i] > t[m]:
ok = m
else:
ng = m
if ok != N:
t[ok] = a[i]
eater[i] = ok + 1
print('\n'.join(str(i) for i in eater))
Durchbruch in 68 Minuten. WA2, TLE2, RE2. N ≤ 10 5 </ sup> Ein Dummkopf, der eine Liste von N × N erstellt, ohne sie zu sehen. Es ist groß, wenn Sie tatsächlich Spalten ersetzen und verschieben Da es sich um eine Katastrophe handelt, verarbeite ich sie mit O (1) in der Lesetabelle, habe aber Zeit damit verschwendet, zu vergessen, dass der Zeilen- und Spaltenaustausch zum Zeitpunkt der Translokation vertauscht wird. Gibt es diesmal nicht viele Abfrageprobleme? (3 Fragen) Auge).
from sys import stdin
readline = stdin.readline
N = int(readline())
Q = int(readline())
result = []
transposed = False
rows = list(range(N + 1))
cols = list(range(N + 1))
for _ in range(Q):
Query = list(map(int, readline().split()))
if Query[0] == 1:
A, B = Query[1:]
if not transposed:
t = rows[A]
rows[A] = rows[B]
rows[B] = t
else:
t = cols[A]
cols[A] = cols[B]
cols[B] = t
elif Query[0] == 2:
A, B = Query[1:]
if not transposed:
t = cols[A]
cols[A] = cols[B]
cols[B] = t
else:
t = rows[A]
rows[A] = rows[B]
rows[B] = t
elif Query[0] == 3:
transposed = not transposed
elif Query[0] == 4:
A, B = Query[1:]
y, x = A, B
if transposed:
y, x = x, y
y = rows[y]
x = cols[x]
result.append(N * (y - 1) + x - 1)
print('\n'.join(str(i) for i in result))
Brechen Sie in 63 Minuten und einer halben durch. WA2, RE1. Das Größte dieses Mal. Wenn Sie denken, dass es ein einfaches Problem ist, einen DP zu verteilen, WA. Im Moment, als ich mitten im Schreiben "T1 / 2" schrieb, dachte ich, ich würde es vermeiden und sagte: "Warum schreibst du" T1 * 0,5 "? Es ist eine Gleitkommazahl !!!" Bemerkt AC.
N, L = map(int, input().split())
x = set(map(int, input().split()))
T1, T2, T3 = map(int, input().split())
dp = [float('inf')] * (L + 4)
dp[0] = 0
for i in range(L):
a = dp[i] + T1
if i + 1 in x:
a += T3
if dp[i + 1] > a:
dp[i + 1] = a
a = dp[i] + T1 + T2
if i + 2 in x:
a += T3
if dp[i + 2] > a:
dp[i + 2] = a
a = dp[i] + T1 + T2 * 3
if i + 4 in x:
a += T3
if dp[i + 4] > a:
dp[i + 4] = a
result = dp[L]
result = min(result, dp[L - 1] + T1 // 2 + T2 // 2)
result = min(result, dp[L - 2] + T1 // 2 + 3 * T2 // 2)
result = min(result, dp[L - 3] + T1 // 2 + 5 * T2 // 2)
print(result)
Ich habe aufgegeben, weil ich noch 20 Minuten Zeit hatte. Wie auch immer, ich muss 2 Fragen lösen, um eine fortgeschrittene Person zu werden. Wenn ich nur das aufzeichne, was unten steht, kann ich mit O (1) umziehen, aber welcher Schreibtisch ist jetzt eingeschaltet? Ist O (* N *), habe ich mich gefragt, was ich tun soll. Diesmal gibt es jedoch viele Abfrageprobleme (4. Frage).
Ich habe aufgegeben, weil ich noch 20 Minuten Zeit hatte. Wie auch immer, ich muss 2 Fragen lösen, bevor ich ein fortgeschrittener Spieler werden kann. 1 ≤ a i </ sub> ≤ 2 Kann ich also zwei Prioritätswarteschlangen haben? Ist O (* N *), also dachte ich, es wäre unmöglich, vielleicht ein ausgeglichener Dichotomiebaum.
Recommended Posts