Lee • 7天前
using namespace std; int dp[5001][50]; int temp[50]; int main(){
int k,v,n;
cin>>k>>v>>n;
memset(dp,0xf0,sizeof dp);
for(int i=1;i<=n;i++){
dp[0][0]=0;
int x,y;
cin>>x>>y;
for(int j=v;j>=x;j--){
int p1=0,p2=0;
for(int a=0;a<k;a++){
if(dp[j][p1]<dp[j-x][p2]+y){
temp[a]=dp[j-x][p2]+y;
p2++;
}
else{
temp[a]=dp[j][p1];
p1++;
}
}
for(int a=0;a<k;a++){
dp[j][a]=temp[a];
}
}
}
int ans=0;
for(int a=0;a<k;a++){
if(dp[v][a]>=0){
ans+=dp[v][a];
}
}
cout<<ans;
return 0;
}
评论:
请先登录,才能进行评论