Beachten Sie, dass die Antwort eine Ganzzahl größer oder gleich 0 ist, sodass eine Ziffer eine Falle enthält. D i </ sub> ≤ 100. Wenn Sie die Antwort also gehorsam mit einer Ganzzahl berechnen, überschreitet sie den Bereich von int64. Python, also nichts Ich kann rechnen ohne nachzudenken.
N, *d = map(int, open(0).read().split())
for i in range(N):
if d[i] == 1:
print(10)
else:
print(9 * 10 ** (d[i] - 1))
Nun, es ist nicht schwer, mit einer Zeichenkette zu rechnen.
N, *d = map(int, open(0).read().split())
for i in range(N):
if d[i] == 1:
print(10)
else:
print('9' + '0' * (d[i] - 1))
Überlegen Sie, wohin Sie von Stadt i aus gehen können. Sei j eine Stadt, die in der Menge der Städte S enthalten ist (einschließlich Stadt i selbst), die von Stadt i über eine Autobahn erreicht werden kann, und dann kann Stadt j über eine Fußgängerstraße erreicht werden. Die Summe der Mengen (einschließlich der Stadt j selbst) ist die Menge der Städte, die von Stadt i aus erreicht werden können. Und natürlich sind alle Städte, die von den Städten in derselben Menge S aus erreichbar sind, gleich. Da die Verarbeitung für die Anzahl der Städte durchgeführt wird, die in der Menge S enthalten sind, kann sie als * O * (* N *) gelöst werden.
from sys import setrecursionlimit, stdin
def find(parent, i):
t = parent[i]
if t < 0:
return i
t = find(parent, t)
parent[i] = t
return t
def unite(parent, i, j):
i = find(parent, i)
j = find(parent, j)
if i == j:
return
parent[j] += parent[i]
parent[i] = j
readline = stdin.readline
setrecursionlimit(10 ** 6)
N, D, W = map(int, readline().split())
car = [-1] * N
for _ in range(D):
a, b = map(lambda x: int(x) - 1, readline().split())
unite(car, a, b)
walking = [-1] * N
for _ in range(W):
c, d = map(lambda x: int(x) - 1, readline().split())
unite(walking, c, d)
xs = [i for i in range(N) if car[i] < 0]
cs = {}
ss = {}
for x in xs:
cs[x] = 0
ss[x] = set()
for i in range(N):
a = find(car, i)
b = find(walking, i)
if b in ss[a]:
continue
ss[a].add(b)
cs[a] -= walking[b]
result = 0
for x in xs:
result -= car[x] * (cs[x] - 1)
print(result)
Recommended Posts