P1616疯狂的采药

传送

它不是可爱的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总分

                      

原文地址:https://www.cnblogs.com/lcez56jsy/p/10506914.html