提交时间:2024-05-08 13:15:25

运行 ID: 146154

#include<bits/stdc++.h> using namespace std; int a,b,c,x[1000005],y[1000005],f[1000005],k,p; int main(){ cin>>p; for(k = 1;k <= p;k++){ cin>>a>>b>>c; for(int i=1;i<=c;i++)cin>>x[i]>>y[i]; for(int k=1;k<=b;k++) { memset(f,0,sizeof(f));//将dp数组清零 for(int i=1;i<=c;i++) { for(int j=x[i]/1000;j<=a/1000;j++) { f[j]=max(f[j],f[j-x[i]/1000]+y[i]);//状态转移方程 } } a+=f[a/1000]; } cout<<a; cout<<endl; } return 0; }