它不是可爱的01背包了!!!这个题中一种药可以采无限次!!!
它进化成了完全背包。完全背包中的内循环从m到v[i]改成了从v[i]到m
既然如此,代码如下:
#include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace std; int c,t,m,v[1000001],w[1000001],f[500000];//f数组最好开大点 int main() {cin>>t>>m; for(int i=1;i<=m;i++) {cin>>v[i]>>w[i]; } //f[1][v[1]]=v[1]*w[1]; for(int i=1;i<=m;i++) { for(int j=v[i];j<=t;j++) {f[j]=max(f[j],f[j-v[i]]+w[i]);} } cout<<f[t]; return 0; }
其余完全背包:P2722总分