結果

提出番号 2446
提出者 keyball44
言語 Python3
提出日時 2025-01-03 09:41:16
問題名 (70)アルゴリズムのお勉強
結果 WA
点数 0%

テストケース

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

ソースコード

import heapq
import copy
from sortedcontainers import SortedSet
from sortedcontainers import SortedList
from sortedcontainers import SortedDict
import bisect
from collections import Counter
from collections import deque
import math
import itertools
from itertools import product
from itertools import groupby
import string
from functools import lru_cache
from collections import defaultdict

import sys
D = defaultdict(int)
D[()] = 0
print(D)
N = int(input())
t = list(map(int, input().split()))
a = []
for i in range(N):
    a.append(list(map(int, input().split())))

preDP = [defaultdict(int) for _ in range(N)]
for i in range (1 << N):
    s = set()
    for j in range(N):
        if (i >> j) & 1:
            s.add(j)
    s = frozenset(s)
    for k in range(N):
        base = t[k]
        for elm in s:
            base = max(0,base-a[elm][k])
        preDP[k][s] = base

dp = [defaultdict(lambda : 10**15) for _ in range(N+1)]
dp[0][frozenset()] = 0
for i in range(N):
    for key,value in dp[i].items():
        for nx in range(N):
            if nx in key:
                continue
            next = set(key)
            next.add(nx)
            dp[i+1][frozenset(next)] = min(dp[i+1][frozenset(next)],value+preDP[nx][key])
print(min(dp[-1].values()))