49517 10381
510
632
628
973
286
555
454
346
928
161
788
218
768
536
928
51
799
376
<242050 bytes omitted>
编号 | 题目 | 状态 | 分数 | 总时间 | 内存 | 代码 / 答案文件 | 提交者 | 提交时间 |
---|---|---|---|---|---|---|---|---|
#22785 | #1020. jwp的采购之旅 | Memory Limit Exceeded | 0 | 3958 ms | 655360 K | C++ 11 / 1.2 K | Albot | 2020-02-14 19:25:27 |
#include <bits/stdc++.h>
using namespace std;
void print_result(int n, int weight_max, vector<int> weight_array, vector<vector<int> > a) {
int num = 0;
int locate = weight_max - 1;
for (int i = 0; i < n; i++) {
int ii = n - i - 1;
if (ii == 0) {
if (a[ii][locate] != 0)
num++;
} else if (a[ii][locate] != a[ii - 1][locate]) {
num++;
locate -= weight_array[ii];
}
}
printf("%d\n", num);
}
int main() {
// freopen("in.txt","r",stdin);
void print_result(int n, int weight_max, vector<int> weight_array, vector<vector<int> > a);
int n, max_w;
cin >> n >> max_w;
max_w++;
vector<int> weight_array(n), value_array(n);
vector<vector<int> > p(n);
for (int i = 0; i < n; i++) {
p[i].resize(max_w);
cin >> weight_array[i];
value_array[i] = 1;
}
for (int i = 0; i < max_w; i++) {
p[0][i] = weight_array[0] <= i ? value_array[0] : 0;
}
for (int i = 1; i < n; i++) {
for (int j = 1; j < max_w; j++) {
p[i][j] = weight_array[i] <= j ? max(p[i - 1][j], p[i - 1][j - weight_array[i]] + value_array[i])
: p[i - 1][j];
}
}
print_result(n, max_w, weight_array, p);
}
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>