POJ 1468 Rectangles(判定点在平行坐标轴的矩形内)
http://poj.org/problem?id=1468
题意:
给你n个边平行于坐标轴的矩形,问你有多少个矩形被其他矩形包含?(两个矩形重叠的话也算相互包含)
分析:
暴力解决,ZOJ 1139
我们只要判断一个矩形的4个点是否都在另一个矩形内就行.
那么如何判断一个点是否在一个平行于坐标走的矩形内呢?只要该点的x和y坐标在这个矩形的[XMIN,XMAX]和[YMIN,YMAX]区间即可.(程序实现判断用的是最大最小XY坐标判断的)
AC代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int maxn=5000+5;
struct Rectangle
{
int xmin,ymin;
int xmax,ymax;
Rectangle(){}
}rec[maxn];
bool in_rec(int i,int j)//判断第i个矩形是否在第j个矩形内
{
return rec[i].xmin>=rec[j].xmin && rec[i].ymin>=rec[j].ymin &&
rec[i].xmax<=rec[j].xmax && rec[i].ymax<=rec[j].ymax;
}
int main()
{
int n;
while(scanf("%d",&n)==1)
{
for(int i=1;i<=n;++i)
scanf("%d%d%d%d",&rec[i].xmin,&rec[i].xmax,&rec[i].ymin,&rec[i].ymax);
int ans=0;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)if(i!=j)
if(in_rec(i,j))
{
++ans;
break;
}
printf("%d\n",ans);
}
return 0;
}