救救孩子,为什么是50分
查看原帖
救救孩子,为什么是50分
968926
YOUR_SUN楼主2023/3/31 15:13
#include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;

ll *win,*lose,*use,*dp;
int main() {
	int n,x;
	cin >> n >> x;
	win  = new ll [n+1];
	lose = new ll [n+1];
	use  = new ll [x+1];
	dp   = new ll [x+1];
	memset(dp,0,(x+1)*sizeof(ll));
	int i,j;
	for(i = 1; i <= n; i++) {
		scanf("%lld%lld%lld", lose+i, win+i, use+i);
	}
	for(i = 1; i <= n; i++) {
		for(j = x; j >= 0; j--) {
			if(static_cast<ll>(j) >= use[i]) {
				dp[j] = max(dp[j]+lose[i], dp[j-use[i]]+win[i]);
			} else {
				dp[j] = dp[j] + lose[i];
			}
		}
	}
//	cout << 5*dp[x];
	ll s = 5*dp[x];
	cout << s;
	delete[]win;
	delete[]lose;
	delete[]use;
	delete[]dp;
	return 0;
}
2023/3/31 15:13
加载中...