您的位置:首页 > 其它

HDU 2056 Rectangles

2015-01-12 18:55 197 查看
这题就是简单的几何题,刚接触ACM做这题时,不会写,当时想的太复杂了,把矩形的各种情况组合都考虑到了,结果发现这样太复杂就放弃了。今天做这道题时,我突然发现既然题目给的是对角线的坐标,为什么不用对角线之间的关系来判别矩形之间的位置关系呢?于是思路就很简单的涌现出来了。只要画个图,就能明白两者之间对角线的关系。

#include<cstdio>
#include<cstring>
#include<algorithm>
double _max(double x,double y)
{
if(x>y)
return x;
return y;
}
double _min(double x,double y)
{
if(x<y)
return x;
return y;
}
using namespace std;
int main()
{
double x1,y1,x2,y2,x3,y3,x4,y4,area;
while(scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4)!=EOF)
{
double _x1=_min(x1,x2),_x2=_max(x1,x2),_y1=_min(y1,y2),_y2=_max(y1,y2);//分别求出矩形对角线两个点的x,y的最大最小值
double _x3=_min(x3,x4),_x4=_max(x3,x4),_y3=_min(y3,y4),_y4=_max(y3,y4);
x1=_max(_x1,_x3),x2=_min(_x2,_x4);//把两条对角线进行比较
y1=_max(_y1,_y3),y2=_min(_y2,_y4);
//printf("x1=%lf,x2=%lf,y1=%lf,y2=%lf\n",x1,x2,y1,y2);
if(x1>x2||y1>y2)
area=0.0;
else
{
double a=x2-x1,b=y2-y1;
area=a*b;
}
printf("%.2lf\n",area);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: