46pts求助
查看原帖
46pts求助
1019894
xy_baifengxiang楼主2025/1/29 19:49
#include<bits/stdc++.h>
using namespace std;
#define ll int
#define ri register ll
struct JUNK{
	ll t,h,f;
}junk[110];
ll d,g,dp[101][101];
inline bool cmp(JUNK x,JUNK y){
	if(x.t==y.t){
		return x.h>y.h;
	}
	return x.t<y.t;
}
signed main(int argv,char**argc) {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>d>>g;
	for(ri z=1;z<=g;z++){
		cin>>junk[z].t>>junk[z].f>>junk[z].h;
	}
	sort(junk+1,junk+g+1,cmp);
	junk[0].t=junk[0].h=junk[0].f=0;
	dp[0][0]=10;
	for(ri z=0;z<g;z++){
		for(ri y=0;y<=d;y++){
			if(dp[z][y]<0)continue;
			if(y+junk[z+1].h>=d&&dp[z][y]+junk[z].t>=junk[z+1].t){
				cout<<junk[z+1].t;
				return 0;
			}	
			if(dp[z][y]+junk[z].t>=junk[z+1].t){
				dp[z+1][y+junk[z+1].h]=dp[z][y]+junk[z].t-junk[z+1].t;
				dp[z+1][y]=max(dp[z+1][y],dp[z][y]+junk[z].t-junk[z+1].t+junk[z+1].f);
			}
		}
	}
	ll ans=10;
	for(ri z=1;z<=g;z++){
		if(ans<junk[z].t){
			cout<<ans;
			return 0;
		}
		ans+=junk[z].f;
	}
	cout<<ans;
	return 0;
}

提交记录

想破脑袋也没想出哪里错了
还请各位大佬指点

2025/1/29 19:49
加载中...