完了01背包都不会了qwq

P1048 [NOIP2005 普及组] 采药

```cpp #include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; int t,m,c[1001],v[1001],f[1001][1001]; int main() { cin>>t>>m; for(int i=1;i<=m;i++) { cin>>c[i]>>v[i]; } for(int i=1;i<=m;i++) { for(int j=t;j>0;j--) { if(c[i]<=j) { f[i][j]=max(f[i-1][j],f[i-1][j-c[i]]+v[i]); } else { f[i][j]=f[i-1][j]; } } } cout<<f[m][t]; return 0; } ``` 清楚易懂的代码 qwq 当时学长让做的,我也健忘。
by 哈哈哈哈?? @ 2019-06-26 21:46:37


@[哈哈哈哈??](/space/show?uid=190197) 的确清楚易懂qwq 不过问题是我还是不知道我的代码锅在哪里 (哭辽)
by 美景、 @ 2019-06-26 21:48:06


@[美景、](/space/show?uid=175473) 我也不知道,我是个蒟蒻,给你一个压维的01背包看下,或许会有帮助 qwq ```cpp #include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; int f[50001]; int c[310000],w[310000]; int n,m; int main() { cin>>n>>m; for(int i=1;i<=n;i++) { cin>>w[i]>>c[i]; } for(int i=1;i<=n;i++) { for(int j=m;j>=w[i];j--) { if(f[j-w[i]]+c[i]>f[j]) { f[j]=f[j-w[i]]+c[i]; } } } cout<<f[m]; return 0; } ```
by 哈哈哈哈?? @ 2019-06-26 21:51:06


@[美景、](/space/show?uid=175473) 虽然我是真的不信您不会…… 但是你的两层循环m和t写反了……
by F1aMiR3 @ 2019-06-26 21:51:46


@[Aiming_High](/space/show?uid=87393) 啊呸,我sb了
by F1aMiR3 @ 2019-06-26 21:52:07


@[哈哈哈哈??](/space/show?uid=190197) 蟹蟹蟹蟹qwq
by 美景、 @ 2019-06-26 21:52:46


@[Aiming_High](/space/show?uid=87393) qwqq
by 美景、 @ 2019-06-26 21:53:13


@[美景、](/space/show?uid=175473) 您快读写炸了?????
by 红色OI再临 @ 2019-06-26 21:54:03


我尝试输出了你的m和t,是一堆乱码
by 红色OI再临 @ 2019-06-26 21:54:37


~~但我一般不写快读~~
by 红色OI再临 @ 2019-06-26 21:55:05


| 下一页