完全背包特点:
对于物品没有取的次数限制。
题目大意:
给定次数t,起始资金st和存储年数year,给定n个存储政策的资金v[]和收益w[],问year年之后本金和收益一共为多少。
#include<bits/stdc++.h>
using namespace std;
const int maxn=1000010;
int t;
int st,year;
int n;
int v[maxn],w[maxn];
int money[maxn];
int main()
{
scanf("%d",&t);
while(t--)
{
memset(v,0,sizeof(v));
memset(w,0,sizeof(w));
memset(money,0,sizeof(money));
scanf("%d %d",&st,&year);
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d %d",&v[i],&w[i]);
v[i]/=1000;
}
for(int k=1;k<=year;k++)
{
memset(money,0,sizeof(money));
int maxx=st/1000;
for(int i=1;i<=n;i++)
{
for(int j=v[i];j<=maxx;j++)
{
money[j]=max(money[j],money[j-v[i]]+w[i]);
}
}
st+=money[maxx];
}
printf("%d\n",st);
}
return 0;
}