题目编号P1853
#include <bits/stdc++.h>
using namespace std;
const int M=15,N=1e7+5;
int s,n,d,v[M],w[M];
long long dp[N];
int main(){
scanf("%d%d%d",&s,&n,&d);
for(int i=1;i<=d;i++){
scanf("%d%d",&v[i],&w[i]);
}
for(int y=1;y<=n;y++){
memset(dp,0,sizeof(dp));
for(int i=1;i<=d;i++){
for(int j=1;j<=s;j++){
if(j<v[i]) dp[j]=dp[j];
else dp[j]=max(dp[j],dp[j-v[i]]+w[i]);
}
}
s+=dp[s];
}
printf("%d\n",s);
return 0;
}
最后一个数据点卡着.02s不过...