提出 #15989429
ソースコード 拡げる
N, K = map(int, input().split())
P = list(map(int, input().split()))
_c = list(map(int, input().split()))
# Cを書き換える
C = [0] * N
for i in range(N):
P[i] -= 1
C[i] = _c[P[i]]
m = 31 # bit数
# ダブリング
vertex = list()
score = list()
vertex.append(P)
score.append(C)
for b in range(1, m+1):
p_bth = [0] * N
c_bth = [0] * N
for i in range(N):
p_bth[i] = vertex[b-1][vertex[b-1][i]]
c_bth[i] = score[b-1][i] + score[b-1][vertex[b-1][i]]
vertex.append(p_bth)
score.append(c_bth)
# 桁DP
MIN = -(1 << 63)
prv = [[MIN, 0] for _ in range(N)]
nxt = [[MIN, MIN] for _ in range(N)]
for b in range(m, -1, -1):
for i in range(N):
if (K >> b) & 1:
nxt[vertex[b][i]][0] = max(nxt[vertex[b][i]][0], prv[i][0] + score[b][i])
nxt[vertex[b][i]][1] = max(nxt[vertex[b][i]][1], prv[i][1] + score[b][i])
nxt[i][0] = max(nxt[i][0], prv[i][0], prv[i][1])
else:
nxt[vertex[b][i]][0] = max(nxt[vertex[b][i]][0], prv[i][0] + score[b][i])
nxt[i][0] = max(nxt[i][0], prv[i][0])
nxt[i][1] = max(nxt[i][1], prv[i][1])
prv, nxt = nxt, prv
ans = max(max(x) for x in prv)
if ans == 0:
ans = max(C)
print(ans)
提出情報
| 提出日時 | |
|---|---|
| 問題 | D - Moving Piece |
| ユーザ | nebocco |
| 言語 | Python (3.8.2) |
| 得点 | 400 |
| コード長 | 1290 Byte |
| 結果 | AC |
| 実行時間 | 338 ms |
| メモリ | 20644 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 400 / 400 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | s1.txt, s2.txt, s3.txt, s4.txt |
| All | 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt, 31.txt, 32.txt, 33.txt, 34.txt, 35.txt, 36.txt, 37.txt, 38.txt, s1.txt, s2.txt, s3.txt, s4.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 01.txt | AC | 314 ms | 20508 KiB |
| 02.txt | AC | 316 ms | 20644 KiB |
| 03.txt | AC | 333 ms | 20284 KiB |
| 04.txt | AC | 319 ms | 20460 KiB |
| 05.txt | AC | 24 ms | 9168 KiB |
| 06.txt | AC | 329 ms | 20304 KiB |
| 07.txt | AC | 321 ms | 20032 KiB |
| 08.txt | AC | 325 ms | 20220 KiB |
| 09.txt | AC | 317 ms | 19788 KiB |
| 10.txt | AC | 324 ms | 20216 KiB |
| 11.txt | AC | 311 ms | 19976 KiB |
| 12.txt | AC | 323 ms | 20044 KiB |
| 13.txt | AC | 330 ms | 20336 KiB |
| 14.txt | AC | 324 ms | 20508 KiB |
| 15.txt | AC | 336 ms | 20328 KiB |
| 16.txt | AC | 310 ms | 20644 KiB |
| 17.txt | AC | 328 ms | 19968 KiB |
| 18.txt | AC | 320 ms | 20256 KiB |
| 19.txt | AC | 338 ms | 19908 KiB |
| 20.txt | AC | 310 ms | 19784 KiB |
| 21.txt | AC | 333 ms | 20368 KiB |
| 22.txt | AC | 299 ms | 20044 KiB |
| 23.txt | AC | 335 ms | 20176 KiB |
| 24.txt | AC | 307 ms | 20224 KiB |
| 25.txt | AC | 338 ms | 19392 KiB |
| 26.txt | AC | 316 ms | 19452 KiB |
| 27.txt | AC | 321 ms | 19276 KiB |
| 28.txt | AC | 327 ms | 19592 KiB |
| 29.txt | AC | 322 ms | 19388 KiB |
| 30.txt | AC | 323 ms | 19408 KiB |
| 31.txt | AC | 326 ms | 19844 KiB |
| 32.txt | AC | 332 ms | 19656 KiB |
| 33.txt | AC | 335 ms | 19700 KiB |
| 34.txt | AC | 325 ms | 19820 KiB |
| 35.txt | AC | 309 ms | 19264 KiB |
| 36.txt | AC | 315 ms | 19272 KiB |
| 37.txt | AC | 331 ms | 19396 KiB |
| 38.txt | AC | 319 ms | 19396 KiB |
| s1.txt | AC | 24 ms | 9064 KiB |
| s2.txt | AC | 27 ms | 9068 KiB |
| s3.txt | AC | 34 ms | 9176 KiB |
| s4.txt | AC | 24 ms | 9296 KiB |