比赛 不平凡的世界 评测结果 AAAWWWWWWW
题目名称 不平凡的boss 最终得分 30
用户昵称 前鬼后鬼的守护 运行时间 2.500 s
代码语言 C++ 内存使用 1.63 MiB
提交时间 2015-11-05 11:49:38
显示代码纯文本
#include<cstdio>
#include<algorithm>
const int MAXN=100000,D=10;
inline int read(){
	int x=0;char ch=getchar();while(ch<'0'||ch>'9')ch=getchar();
	while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+ch-'0',ch=getchar();return x;
}
int n,ans=1<<30;
struct boss{
	int x,y,z;
}bs[MAXN+D];
void init(){
	n=read();
	for(int i=1;i<=n;i++)
		bs[i].x=read(),bs[i].y=read(),bs[i].z=read();
}
void enume(){
	for(int a=0;a<=300;a++)
		for(int b=0;b<=300;b++){
			int c=0;
			for(int i=1;i<=n;i++)
				if(a<bs[i].x&&b<bs[i].y&&bs[i].z>c)
					c=bs[i].z;
			if(a+b+c<ans)
				ans=a+b+c;
		}
}
inline bool comp(boss a,boss b){return a.x<b.x||(a.x==b.x&&a.y<b.y);}
int prev[MAXN+D];
void scan(){
	std::sort(bs+1,bs+1+n,comp);int now,p;
	for(now=1;now<=n;now++){
		while(p&&bs[now].x>=bs[p].x&&bs[now].y>=bs[p].y)p=prev[p];
		prev[now]=p;p=now;
	}
	for(now=n;prev[now];now=prev[now])
		if(bs[now].y+bs[prev[now]].x<ans)
			ans=bs[now].y+bs[prev[now]].x;
}
int main(){
	freopen("playwithboss.in","r",stdin);
	freopen("playwithboss.out","w",stdout);
	init();
	if(n<=300)enume();
	else scan();
	printf("%d",ans);
	return 0;
}