灵异背包满江红悬关求救

P1048 [NOIP2005 普及组] 采药

把if和else去掉,你都写了max了还写if else就没啥意义了
by Rain_sun @ 2023-07-22 09:22:08


@[baiyang_233](/user/750476)
by Rain_sun @ 2023-07-22 09:22:16


``` for(int j=1;j<=ti;j++){ f[i][j]=max(f[i-1][j],f[i-1][j-t[i]]+v[i]); }
by Rain_sun @ 2023-07-22 09:22:40


@[Rain_sun](/user/1018563) 谢佬 [但还是wa(摊)](https://www.luogu.com.cn/record/116854574)
by Baiyang_2333 @ 2023-07-22 09:25:23


@[baiyang_233](/user/750476) j应该从t[i]开始循环吧
by Asimplename @ 2023-07-22 09:26:51


```cpp #include<bits/stdc++.h> using namespace std; typedef unsigned long long ull; ull w[1001],v[1001],f[1001][1001]; int main() { ull c,n; cin>>c>>n; for(int i=1; i<=n; i++) cin>>w[i]>>v[i]; for(int i=1; i<=n; i++) for(int j=1; j<=c; j++) { if(j<w[i]) f[i][j]=f[i-1][j]; else f[i][j]=max(f[i-1][j],f[i-1][j-w[i]]+v[i]); } cout<<f[n][c]<<endl; return 0; }```
by hjqhs @ 2023-07-22 09:27:15


@[Asimplename](/user/422647) ......? 甚么
by Baiyang_2333 @ 2023-07-22 09:28:38


@[baiyang_233](/user/750476) 我说你按照[这个代码](https://www.luogu.com.cn/record/116854574)应该把j改为从t[i]开始循环
by Asimplename @ 2023-07-22 09:30:39


@[baiyang_233](/user/750476) ```cpp #include<bits/stdc++.h> using namespace std; int w[10001],c[10001],f[10001]; int main() { int t,m,i,j; cin>>t>>m; for(i=1;i<=m;i++) { cin>>w[i]>>c[i]; } for(i=1;i<=m;i++) { for(j=t;j>=w[i];j--) { f[j]=max(f[j],f[j-w[i]]+c[i]); } } cout<<f[t]<<endl; return 0; }
by hzoi_Shadow @ 2023-07-22 09:32:34


帖结 应该把状态转移方程改成 ```cpp f[i][j]=max(f[i-1][j],f[i-1][j-t[i]]+v[i]); ``` 而不是原代码的 ```cpp f[i][j]=max(f[i-1][j],f[i-1][ti-t[i]]+v[i]); ``` 所有回复的大佬皆关
by Baiyang_2333 @ 2023-07-22 09:34:54


|