Submission #27849


ソースコード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
m = int(input())
jam = []
for i in range(m):
jam.append(int(input()))
w_hate_max = [[] for _ in range(m)]
for i in range(5):
kind_i, w_i, hate_i, max_in_i = map(int, input().split())
kind_i -= 1
w_hate_max[kind_i].append([w_i, hate_i, max_in_i])
total = 0
for i in range(m):
infinity = 1000000000
n = len(w_hate_max[i])
dp = [[infinity] * (jam[i] + 1) for _ in range(n + 1)]
dp[0][0] = 0
for j in range(n):
w, hate, max_in = w_hate_max[i][j]
for picked in range(w + 1):
dissatisfaction = 0 if picked == w else 4 << (w - picked + hate)
if dissatisfaction > max_in:
continue
for k in range(picked, jam[i] + 1):
dp[j + 1][k] = min(
dp[j + 1][k],
dp[j][k - picked] + dissatisfaction)
minimum = infinity
for k in range(jam[i] + 1):
minimum = min(minimum, dp[n][k])
if minimum == infinity:
total = 'Hello!'
break
else:
total += minimum
print(total)

ステータス

項目 データ
問題 0016 - ありすぬーんてぃー
ユーザー名 KirikaYuumura
投稿日時 2017-10-25 15:22:33
言語 Python3
状態 Accepted
得点 35
ソースコード長 1093 Byte
最大実行時間 47 ms
最大メモリ使用量 4268 KB

セット

セット 得点 Cases
1 ALL 35 / 35 *

テストケース

ファイル名 状態 実行時間 メモリ使用量 #
Alice_in1.txt AC 47 ms 4104 KB
1
Alice_in2.txt AC 35 ms 4172 KB
1
Alice_in3.txt AC 47 ms 4248 KB
1
Alice_in4.txt AC 39 ms 4192 KB
1
Alice_in5.txt AC 35 ms 4268 KB
1