这个 Unaccepted 40的烂摊子该如何处理
查看原帖
这个 Unaccepted 40的烂摊子该如何处理
672360
Ch35楼主2022/9/13 20:53

烂摊子,错就错在输出路径:

#include<bits/stdc++.h>
using namespace std;
int n,m,t,u[205],w[205],c[205],dp[205][205][205],a[205];
int main(){
	cin>>m>>t>>n;
	for(int i=1;i<=n;i++)cin>>u[i]>>w[i]>>c[i];
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			for(int k=1;k<=t;k++){
				if(u[i]<=j&&w[i]<=k)dp[i][j][k]=max(dp[i-1][j][k],dp[i-1][j-u[i]][k-w[i]]+c[i]);
				else dp[i][j][k]=dp[i-1][j][k];
			}
		}
	}
	cout<<dp[n][m][t]<<endl;
	for(int i=n;i>=1;i--){
		for(int j=1;j<=m;j++){
			for(int k=1;k<=t;k++){
				if(u[i]<=j&&w[i]<=k&&dp[i][j][k]==dp[i-1][j-u[i]][k-w[i]]+c[i])a[i]=1;
			}
		}
	}
	for(int i=1;i<=n;i++){
	    if(a[i]==1)cout<<i<<' ';
    }
	return 0;
}
2022/9/13 20:53
加载中...