結果

提出番号 2447
提出者 keyball44
言語 Python3
提出日時 2025-01-03 09:43:39
問題名 (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

ソースコード

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()))