90分求调
查看原帖
90分求调
937537
ldll0721楼主2024/5/24 17:16
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define maxn 1005
int d,g,dp[maxn][maxn],ans;//i件j高
struct node {
	int f,t,h;
} a[maxn];
bool cmp(node a,node b) {
	return a.t<b.t;
}
signed main() {
	memset(dp,-1,sizeof(dp));
	cin>>d>>g;
	for(int i=1; i<=g; i++) {
		cin>>a[i].t>>a[i].f>>a[i].h;
		ans+=a[i].f;
	}
	sort(a+1,a+g+1,cmp);
	dp[0][0]=10;
	for(int i=0; i<=g; i++) {
		for(int j=0; j<=d; j++) {
			if(dp[i][j]<0)continue;
			if(j+a[i+1].h>=d&&dp[i][j]>=a[i+1].t-a[i].t) {
				cout<<a[i+1].t;
				return 0;
			}
			if(dp[i][j]>=(a[i+1].t-a[i].t)){
			dp[i+1][j+a[i+1].h]=dp[i][j]-a[i+1].t+a[i].t;
			dp[i+1][j]=max(dp[i+1][j],dp[i][j]-a[i+1].t+a[i].t+a[i+1].f);
			}
		}
	}
	cout<<ans+10;
	return 0;
}
2024/5/24 17:16
加载中...