60pts求助!!!
查看原帖
60pts求助!!!
1354765
smzxyyc楼主2024/11/10 15:29
#include<bits/stdc++.h>
using namespace std;
int v,m,n,a[105],b[105],c[105];
long long dp[10005][10005];
string f[205][205];
int main(){
	cin>>v>>m>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i]>>b[i]>>c[i];
		for(int j=v;j>=a[i];j--){
			for(int k=m;k>=b[i];k--){
				if(dp[j-a[i]][k-b[i]]+c[i]>dp[j][k]){
					dp[j][k]=dp[j-a[i]][k-b[i]]+c[i];
					f[j][k]=f[j-a[i]][k-b[i]]+char(i+48);
				}
				else if(dp[j-a[i]][k-b[i]]+c[i]==dp[j][k]){
					f[j][k]=min(f[j][k],f[j-a[i]][k-b[i]]+char(i+48));
				}
			}
		}
	}
	cout<<dp[m][v]<<"\n";
	for(int i=0;i<f[m][v].size();i++){
		cout<<f[m][v][i]<<" ";
	}
	return 0;
}
2024/11/10 15:29
加载中...