求助!82分

P2871 [USACO07DEC] Charm Bracelet S

d数组小了
by xueshengyi @ 2023-12-23 13:57:30


@[huangshuyuan2010](/user/1104901) 1. 您 `d[10000]` 数组的初始值是未定义的,可能包含任意值。使用 dp 的话,建议将数组值初始化。 2. 题目好像未给出数据范围。如果输入的物品数量 $n$ 或背包容量 $m$ 超过 $1 \times 10 ^ 4$,您的程序将无法正确处理所有的数据。 我使用了 `fill` 函数来初始化 `d` 数组。您可以参考一下。 ```cpp #include<bits/stdc++.h> using namespace std; const int MAX_N = 2e5 + 5; const int MAX_M = 2e5 + 5; int n, m, w[MAX_N], v[MAX_N], d[MAX_M]; int main() { cin >> n >> m; for (int i = 1; i <= n; i++) { cin >> w[i] >> v[i]; } fill(d, d + MAX_M, 0); // 初始化数组d for (int i = 1; i <= n; i++) { for (int l = m; l >= w[i]; l--) { d[l] = max(d[l], d[l - w[i]] + v[i]); } } cout << d[m]; return 0; } ``` 希望可以帮到你。
by Zemu_Ooo @ 2023-12-23 13:59:43


@[Zemu_Ooo](/user/467824) 谢谢
by hsy20101122 @ 2023-12-23 14:01:32


@[xueshengyi](/user/971543) 谢谢
by hsy20101122 @ 2023-12-23 14:01:52


bracelet whose weight is no more than M (1 ≤ M ≤ 12,880).m告诉范围是12880
by xueshengyi @ 2023-12-23 14:04:43


|