結果

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

テストケース

テストケース 結果 得点 実行時間 メモリ使用量
1 AC 100% 25ms 32944KB
2 AC 100% 26ms 33344KB
3 AC 100% 22ms 32784KB
4 AC 100% 21ms 32768KB
5 AC 100% 21ms 32832KB
6 AC 100% 25ms 33328KB
7 AC 100% 23ms 32608KB
8 AC 100% 21ms 33136KB
9 AC 100% 25ms 32608KB
10 AC 100% 22ms 32800KB
11 AC 100% 45ms 32816KB
12 AC 100% 37ms 33296KB
13 WA 0% 45ms 33024KB
14 AC 100% 36ms 32704KB
15 WA 0% 35ms 32688KB
16 AC 100% 26ms 32608KB
17 AC 100% 22ms 33312KB
18 AC 100% 25ms 32784KB
19 AC 100% 81ms 32864KB
20 AC 100% 77ms 33216KB
21 AC 100% 23ms 32960KB
22 AC 100% 148ms 33104KB
23 AC 100% 25ms 32800KB
24 AC 100% 320ms 33536KB
25 AC 100% 82ms 32784KB
26 WA 0% 156ms 32960KB
27 AC 100% 313ms 33248KB
28 AC 100% 82ms 32720KB
29 WA 0% 1459ms 38400KB
30 AC 100% 149ms 32720KB

ソースコード

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+2**nx] = min(DP[bitset+2**nx],DP[bitset]+learncost)
print(DP[-1])