题目
解题思路
完全背包问题,和之前做的题目不一样的就是,每个草药可以无限采。
代码展示
#include<bits/stdc++.h>
using namespace std;
long long n,m;
long long t[1000001],v[100001],dp[10000001];//数组一定要开到足够大
int main()
{
scanf("%lld %lld",&n,&m);
for(int i=1;i<=m;i++)
scanf("%lld %lld",&t[i],&v[i]);
//核心代码
for(int i=1;i<=m;i++)
for(int j=t[i];j<=n;j++)
{
dp[j]=max(dp[j],dp[j-t[i]]+v[i]);
}
printf("%lld",dp[n]);
return 0;
}