49517 10381
510
632
628
973
286
555
454
346
928
161
788
218
768
536
928
51
799
376
<242050 bytes omitted>
编号 | 题目 | 状态 | 分数 | 总时间 | 内存 | 代码 / 答案文件 | 提交者 | 提交时间 |
---|---|---|---|---|---|---|---|---|
#22767 | #1020. jwp的采购之旅 | Memory Limit Exceeded | 0 | 5210 ms | 655360 K | Python 3 / 1.1 K | Albot | 2020-02-14 17:41:14 |
def print_result(n,weight_max,package, weight_array, value_array):
num = 0
locate = weight_max -1
for i in range(n):
i = n-i-1
if i==0:
if package[i][locate] != 0:
num += 1
elif package[i][locate] != package[i-1][locate]:
locate -= weight_array[i]
num += 1
print(num)
def main():
n, weight_max= map(int,input().split())
weight_max += 1
weight_array = []
value_array = []
for i in input().split():
weight_array.append(int(i))
value_array.append(int(1))
# 本质上package是转移方程, 利用空间换时间和准确度.
package = [[0 for j in range(weight_max)]for i in range(n)]
for j in range(weight_max):
package[0][j] = value_array[0] if weight_array[0] <= j else 0
for i in range(1,n):
for j in range(1,weight_max):
package[i][j] = max(package[i-1][j], package[i-1][j-weight_array[i]]+value_array[i]) if weight_array[i] <= j else package[i -1][j]
print_result( n,weight_max,package, weight_array, value_array)
main()
49517 10381
510
632
628
973
286
555
454
346
928
161
788
218
768
536
928
51
799
376
<242050 bytes omitted>
10275 688001
248
7
829
41
135
305
833
20
238
562
122
705
44
566
959
252
837
828
2
<50105 bytes omitted>
99537 230761
617
79
429
959
175
563
23
857
892
30
557
449
298
197
975
469
123
54
<486854 bytes omitted>
32687 937376
986
151
30
876
983
54
213
694
547
730
224
193
320
597
991
454
642
280
<159779 bytes omitted>