样例过不去,helpme
查看原帖
样例过不去,helpme
1169121
zhangyuanjun楼主2024/2/24 13:48
#include<bits/stdc++.h>
using namespace std;
int d,g;
struct ku{
	int t=0,h=0,f=0;
}trash[110];
int dp[150][150];
bool cmp(ku x,ku y){
	return x.t<y.t;
}
int main(){
	cin>>d>>g;
	for(int i=1;i<=g;i++) cin>>trash[i].t>>trash[i].f>>trash[i].h;
	memset(dp,-1,sizeof(dp));
	dp[0][0]=10;
	sort(trash+1,trash+g+1,cmp);
	for(int i=1;i<=g;i++){
		int t=trash[i].t,h=trash[i].h,f=trash[i].f;
		for(int j=0;j<=d+25;j++){
		//	printf("\ni:%dj:%d-",i,j);
			if(t>dp[i-1][j]+trash[i-1].t) continue;
			int pastt=(t-trash[i-1].t);
			if(j>=h)
				dp[i][j]=max(dp[i-1][j-h],dp[i-1][j]+f-pastt);
			else
				dp[i][j]=dp[i-1][j]+f-pastt;
	//		printf("%d ",dp[i][j]);
		}
	}
	int ans=-1;
	for(int i=1;i<=g;i++){
		for(int j=d;j<=d+25;j++){
			if(dp[i][j]>=0){
				ans=trash[i].t;
				break;
			}
		}
	}
	if(ans!=-1) printf("%d",ans);
	else printf("%d",dp[g][0]);
	return 0;
	
}

2024/2/24 13:48
加载中...