提出 #15454058
ソースコード 拡げる
import sys import numpy as np import numba from numba import njit i8 = numba.int64 read = sys.stdin.buffer.read readline = sys.stdin.buffer.readline readlines = sys.stdin.buffer.readlines @njit((i8[:], ), cache=True) def main(XYP): X, Y, P = XYP[::3], XYP[1::3], XYP[2::3] N = len(X) dp_X = np.empty((1 << N, N), np.int64) # 建設、人 -> Xコスト dp_X[0] = np.abs(X) * P for n in range(N): B = 1 << n dp_X[B:2 * B] = np.minimum(dp_X[:B], np.abs(X - X[n]) * P) dp_Y = np.empty((1 << N, N), np.int64) # 建設、人 -> Xコスト dp_Y[0] = np.abs(Y) * P for n in range(N): B = 1 << n dp_Y[B:2 * B] = np.minimum(dp_Y[:B], np.abs(Y - Y[n]) * P) popcount = np.zeros(1 << N, np.int64) for n in range(N): popcount[1 << n:1 << n + 1] = popcount[:1 << n] + 1 INF = 10**18 ans = np.full(N + 1, INF, np.int64) for s in range(1 << N): size = popcount[s] t = s while True: u = s ^ t cost = (np.minimum(dp_X[t], dp_Y[u])).sum() ans[size] = min(ans[size], cost) if t == 0: break t = (t - 1) & s return ans N = int(readline()) XYP = np.array(read().split(), np.int64) ans = main(XYP) print('\n'.join(map(str, ans.tolist())))
提出情報
提出日時 | |
---|---|
問題 | E - M's Solution |
ユーザ | maspy |
言語 | Python (3.8.2) |
得点 | 500 |
コード長 | 1366 Byte |
結果 | AC |
実行時間 | 2256 ms |
メモリ | 117544 KiB |
ジャッジ結果
セット名 | Sample | All | ||
---|---|---|---|---|
得点 / 配点 | 0 / 0 | 500 / 500 | ||
結果 | AC |
|
セット名 | テストケース |
---|---|
Sample | |
All | 00-sample-01.txt, 00-sample-02.txt, 00-sample-03.txt, 01-corner-01.txt, 01-corner-02.txt, 01-corner-03.txt, 01-corner-04.txt, 01-corner-05.txt, 02-random-01.txt, 02-random-02.txt, 02-random-03.txt, 02-random-04.txt, 03-random-quarter-01.txt, 03-random-quarter-02.txt, 03-random-quarter-03.txt, 03-random-quarter-04.txt |
ケース名 | 結果 | 実行時間 | メモリ |
---|---|---|---|
00-sample-01.txt | AC | 531 ms | 107284 KiB |
00-sample-02.txt | AC | 516 ms | 107948 KiB |
00-sample-03.txt | AC | 514 ms | 107280 KiB |
01-corner-01.txt | AC | 1985 ms | 116848 KiB |
01-corner-02.txt | AC | 2011 ms | 116880 KiB |
01-corner-03.txt | AC | 2256 ms | 116884 KiB |
01-corner-04.txt | AC | 561 ms | 107276 KiB |
01-corner-05.txt | AC | 551 ms | 107976 KiB |
02-random-01.txt | AC | 1025 ms | 112440 KiB |
02-random-02.txt | AC | 2083 ms | 117544 KiB |
02-random-03.txt | AC | 2028 ms | 117544 KiB |
02-random-04.txt | AC | 2021 ms | 116860 KiB |
03-random-quarter-01.txt | AC | 1055 ms | 111624 KiB |
03-random-quarter-02.txt | AC | 2034 ms | 117156 KiB |
03-random-quarter-03.txt | AC | 2027 ms | 116884 KiB |
03-random-quarter-04.txt | AC | 2053 ms | 116888 KiB |