样例也过不了
  • 板块P1156 垃圾陷阱
  • 楼主chenkuo
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/10/14 22:26
  • 上次更新2023/10/27 07:31:26
查看原帖
样例也过不了
443023
chenkuo楼主2022/10/14 22:26

怎么了,我又打假了,大佬快来

#include<iostream>
#include<cstdio>
#include<fstream>
#include<algorithm>
#include<cmath>
#include<deque>
#include<vector>
#include<queue>
#include<string>
#include<cstring>
#include<map>
#include<stack>
#include<set>
using namespace std;
int n,m,f[1001][4001],h;
struct asd{
	int t,f,h;
} s[10000];
bool cmp(asd a,asd b){
	if(a.t==b.t&&a.f==b.f) return a.h<b.h;
	if(a.t==b.t) return a.f<b.f;
	return a.t<b.t;
}
int main(){
	scanf("%d%d",&m,&n);
	for(int i=1;i<=n;i++){
		scanf("%d%d%d",&s[i].t,&s[i].f,&s[i].h);
		h=max(h,s[i].t);
	}
	sort(s+1,s+n+1,cmp);
	f[0][10]=1;h+=10; 
	for(int i=1;i<=n;i++) h+=s[i].f;
	for(int k=1;k<=n;k++){
		for(int i=m-1;i>=0;i--){
			for(int j=h;j>=s[k].t;j--){
				if(f[i][j]){
					if(j+s[k].h>=m){
						cout<<s[k].t;
						return 0;
					}
					f[i+s[k].f][j]=1;
					f[i][j+s[k].h]=1;
				}
			}
		}
	}
	for(int i=h;i>=1;i--){
		if(f[i][0]==1){
			cout<<i;
			return 0;
		}
	}
	cout<<0;
} 
2022/10/14 22:26
加载中...