DP萌新求助!
查看原帖
DP萌新求助!
241817
Chancylaser楼主2022/5/28 00:53
#include<bits/stdc++.h>
using namespace std;
const int N=105;
struct qwq{
	int t,f,h;
}e[N];
bool cmp(qwq x,qwq y){
	return x.t<y.t;
}
int f[N][N];
int d,g;
int main(){
	cin>>d>>g;
	for(int i=1;i<=g;i++)
		cin>>e[i].t>>e[i].f>>e[i].h;
	sort(e+1,e+g+1,cmp);
	memset(f,-0x3f,sizeof(f));
	f[0][0]=10;
	for(int i=1;i<=g;i++){
		for(int j=0;j<=d;j++){
			
			if(f[i-1][j]>=e[i].t)
				f[i][j]=max(f[i][j],
						f[i-1][j]+e[i].f);
			if(j>=e[i].h&&f[i-1][j-e[i].h]>=e[i].t)
				f[i][j]=max(f[i][j],
						f[i-1][j-e[i].h]);
				
		}
	}
	
	int sum=-1e9,ans=-1e9;
	for(int i=1;i<=g;i++){
		for(int j=0;j<=d;j++){
			if(f[i][j]>=e[i].t)
				sum=max(sum,j);
			ans=max(ans,f[i][j]);
		}		
		if(sum==d) break;
	}
	if(sum==d) cout<<e[g].t;
	else cout<<ans;
	return 0;
}

测试点2和10过不去awa,求原因

2022/5/28 00:53
加载中...