[PA2014]Lustra

[PA2014]Lustra

题目大意:

有n个工厂参加竞标。每个工厂能生产长度在([a_i,b_i])之间,宽度在([c_i,d_i])之间的镜子,镜子不可以旋转。

问是否有某个工厂能生产出其它所有工厂能生产的镜子。

思路:

查询是否有某个工厂,(a_i,c_i)最小,(b_i,d_i)最大即可。

源代码:

#include<cstdio>
#include<cctype>
#include<algorithm>
inline int getint() {
	register char ch;
	while(!isdigit(ch=getchar()));
	register int x=ch^'0';
	while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0');
	return x;
}
const int N=1e5;
int a[N],b[N],c[N],d[N];
int main() {
	for(register int T=getint();T;T--) {
		const int n=getint();
		for(register int i=0;i<n;i++) {
			a[i]=getint();
			b[i]=getint();
			c[i]=getint();
			d[i]=getint();
		}
		const int mina=*std::min_element(&a[0],&a[n]);
		const int maxb=*std::max_element(&b[0],&b[n]);
		const int minc=*std::min_element(&c[0],&c[n]);
		const int maxd=*std::max_element(&d[0],&d[n]);
		for(register int i=0;i<n;i++) {
			bool flag=true;
			flag&=a[i]==mina;
			flag&=b[i]==maxb;
			flag&=c[i]==minc;
			flag&=d[i]==maxd;
			if(flag) {
				puts("TAK");
				goto Next;
			}
		}
		puts("NIE");
		Next:;
	}
	return 0;
}
原文地址:https://www.cnblogs.com/skylee03/p/10197428.html