提出番号 | 2413 |
---|---|
提出者 | awk_138 |
言語 | Python3 |
提出日時 | 2020-10-24 19:23:30 |
問題名 | (70)アルゴリズムのお勉強 |
結果 | WA |
点数 | 0% |
テストケース | 結果 | 得点 | 実行時間 | メモリ使用量 |
---|---|---|---|---|
1 | WA | 0% | 21ms | 33104KB |
2 | WA | 0% | 21ms | 32720KB |
3 | WA | 0% | 22ms | 33264KB |
4 | WA | 0% | 25ms | 32928KB |
5 | WA | 0% | 21ms | 32912KB |
6 | WA | 0% | 26ms | 33168KB |
7 | WA | 0% | 21ms | 32992KB |
8 | WA | 0% | 31ms | 33024KB |
9 | WA | 0% | 20ms | 32624KB |
10 | WA | 0% | 21ms | 33008KB |
11 | WA | 0% | 52ms | 34992KB |
12 | WA | 0% | 33ms | 34160KB |
13 | WA | 0% | 52ms | 35104KB |
14 | WA | 0% | 34ms | 33952KB |
15 | WA | 0% | 33ms | 35216KB |
16 | WA | 0% | 22ms | 32816KB |
17 | WA | 0% | 22ms | 33072KB |
18 | WA | 0% | 21ms | 33008KB |
19 | WA | 0% | 91ms | 36032KB |
20 | WA | 0% | 93ms | 36272KB |
21 | WA | 0% | 23ms | 32800KB |
22 | WA | 0% | 184ms | 37376KB |
23 | WA | 0% | 26ms | 33392KB |
24 | WA | 0% | 403ms | 43088KB |
25 | WA | 0% | 99ms | 35760KB |
26 | WA | 0% | 188ms | 38736KB |
27 | WA | 0% | 410ms | 43312KB |
28 | WA | 0% | 91ms | 35936KB |
29 | TLE | 0% | 2021ms | 80832KB |
30 | WA | 0% | 185ms | 38656KB |
def rec(bit, v, dist, dp, N):
if dp[bit][v] != -1:
return dp[bit][v]
if bit == (1<<v):
dp[bit][v] = 0
return dp[bit][v]
res = -float('inf')
prev_bit = bit & ~(1<<v)
for u in range(N):
if not(prev_bit & (1<<u)):
continue
res = max(res, rec(prev_bit, u, dist, dp, N) + dist[u][v])
if v == 0:
print(rec(prev_bit, u, dist, dp, N))
print(dist[u][v])
dp[bit][v] = res
return res
def solve():
N = int(input())
t = list(map(int, input().split()))
dist = [list(map(int,input().split())) for _ in range(N)]
res = -float('inf')
dp = [[-1] * N for _ in range((1<<N))]
for v in range(N):
res = max(res, rec((1<<N)-1, v, dist, dp, N))
print(max(0,sum(t) - res))
if __name__ == '__main__':
solve()