题解
2025-07-17 22:04:46
发布于:福建
0阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int a[120],b[120],c[120];
int dp[300][300];
string dp2[201][201];
int main(){
int m,v,n;
cin>>m>>v>>n;
for(int i=1;i<=n;++i){
cin>>a[i]>>b[i]>>c[i];
}
for(int i=1;i<=n;++i){
for(int j=m;j>=a[i];--j){
for(int k=v;k>=b[i];--k){
if(dp[j][k]<dp[j-a[i]][k-b[i]]+c[i]||(dp[j][k]==dp[j-a[i]][k-b[i]]+c[i]&&dp2[j][k]>=dp2[j-a[i]][k-b[i]]+char(i))){
dp[j][k]=max(dp[j][k],dp[j-a[i]][k-b[i]]+c[i]);
dp2[j][k]=dp2[j-a[i]][k-b[i]];
dp2[j][k]+=char(i);
}
}
}
}
cout<<dp[m][v]<<endl;
for(int i=0;i<dp2[m][v].size();++i){
cout<<int(dp2[m][v][i])<<' ';
}
return 0;
}
这里空空如也
有帮助,赞一个