結果

提出番号 2449
提出者 keyball44
言語 Python3
提出日時 2025-01-03 10:30:51
問題名 (70)アルゴリズムのお勉強
結果 WJ
点数 0%

テストケース

テストケース 結果 得点 実行時間 メモリ使用量
1 WJ 0% 0ms 0KB
2 WJ 0% 0ms 0KB
3 WJ 0% 0ms 0KB
4 WJ 0% 0ms 0KB
5 WJ 0% 0ms 0KB
6 WJ 0% 0ms 0KB
7 WJ 0% 0ms 0KB
8 WJ 0% 0ms 0KB
9 WJ 0% 0ms 0KB
10 WJ 0% 0ms 0KB
11 WJ 0% 0ms 0KB
12 WJ 0% 0ms 0KB
13 WJ 0% 0ms 0KB
14 WJ 0% 0ms 0KB
15 WJ 0% 0ms 0KB
16 WJ 0% 0ms 0KB
17 WJ 0% 0ms 0KB
18 WJ 0% 0ms 0KB
19 WJ 0% 0ms 0KB
20 WJ 0% 0ms 0KB
21 WJ 0% 0ms 0KB
22 WJ 0% 0ms 0KB
23 WJ 0% 0ms 0KB
24 WJ 0% 0ms 0KB
25 WJ 0% 0ms 0KB
26 WJ 0% 0ms 0KB
27 WJ 0% 0ms 0KB
28 WJ 0% 0ms 0KB
29 WJ 0% 0ms 0KB
30 WJ 0% 0ms 0KB

ソースコード

inf = 10**12
N = int(input())
t = list(map(int, input().split()))
a = []
for i in range(N):
    a.append(list(map(int, input().split())))
DP = [inf for _ in range(1<<N)]
#DP[bitset] := bitsetの状態まで最適に勉強したときにかかる時間
DP[0] = 0
for bitset in range(1<<N):
    for nx in range(N):
        if (bitset >> nx)&1:#既にnxを学んでいるので飛ばす
            continue
        learncost = t[nx]
        for i in range(N):
            if (bitset >> i)&1:
                learncost -= a[nx][i]
        learncost = max(0,learncost)
        DP[bitset | (1 << nx)] = min(DP[bitset | (1 << nx)], DP[bitset] + learncost)
print(DP[-1])