用一维数组来解这道题,m最大为10^4,那按我这样的写法应该开个10^4大小的数组就行了呀,偏偏最后两个re,就是要开道10^7才给我过,无法理解。
#include<iostream>
using namespace std;
long long m, t, v, w, dp[40005] = { 0 };
int main() {
cin >> m >> t;
for (int i = 0; i < t; i++) {
cin >> w >> v;
for (int j = w; j <= m; j++)
dp[j] = max(dp[j], dp[j - w] + v);
}
cout << dp[m] << endl;
return 0;
}