这个地方的dp表示的是有i×1000元可以的到的最大的利润,,
因为钱每次都会多,所以要更新。。
int dp[5000000];
struct Node{
int c,val;
}a[mxn];
int main(){
int T;sf("%d",&T);
while(T--){
int ans=0;
int s,year;sf("%d%d",&s,&year);ans=s;s/=1000;
int n;sf("%d",&n);
rep(i,1,n){ sf("%d%d",&a[i].c,&a[i].val);a[i].c/=1000; }
mem(dp,0);
while(year--){
for(int i=1;i<=n;++i){
for(int j=a[i].c;j<=s;++j){
if(j>=a[i].c) dp[j]=max(dp[j],dp[j-a[i].c]+a[i].val);
}
}
ans+=dp[s];
s=ans/1000;
}
pf("%d\n",ans);
}
}