大佬求助 80分
查看原帖
大佬求助 80分
912999
13970067326a楼主2024/3/11 22:30
#include <bits/stdc++.h>

using namespace std;
struct sb{
	long long a,b;
}dp[110][110];
struct sb2{
	long long x,y,c;
}f[110];
bool cmp(sb2 a,sb2 b){
	return a.x > b.x;
}
long long n,v;
long long ans = -1e9;
int main(){
	cin >> n >> v;
	for (int i = 1; i <= n; i++){
		cin >> f[i].c >> f[i].x >> f[i].y;
	}
	sort(f+1,f+n+1,cmp);
	for (int i = 1; i <= n; i++){
		for (int j = v; j >= f[i].c; j--){
		dp[i][j].a = dp[i-1][j].a;
		dp[i][j].b = dp[i-1][j].b;
			for (int k = i; k >= 1; k--){	
				if (dp[k][j-f[i].c].a + f[i].x >= 0){
				if (dp[k][j-f[i].c].b+f[i].y > dp[i][j].b){
				dp[i][j].a = dp[k][j-f[i].c].a+f[i].x;
				dp[i][j].b = dp[k][j-f[i].c].b+f[i].y;
			}
			}
		}
		if (dp[i][j].a >= 0) ans = max(ans,dp[i][j].b);
		}
	}
	if (ans < 0) cout << -1;
	else cout << ans;
	
	return 0;
} 
2024/3/11 22:30
加载中...