#include <cstdio>
#include <algorithm>
#define max(a,b) ( a>b ? a:b )
#define min(a,b) ( a<b ? a:b )
using namespace std;
int main()
{
int i;
double x[1000];
double y[1000];
double ans;
while(scanf("%lf %lf",&x[1],&y[1])!=EOF)
{
for(int i=2;i<=4;i++)
{
scanf("%lf %lf",&x[i],&y[i]);
}
if( min(x[1],x[2])>=max(x[3],x[4]) || min(x[3],x[4])>=max(x[1],x[2]) )
{
ans=0;
}
else if( min(y[1],y[2])>=max(y[3],y[4]) || min(y[3],y[4])>=max(y[1],y[2]) )
{
ans=0;
}
else
{
//double len=min(x[2],x[4])-max(x[1],x[3]);
//double height=min(y[2],y[4])-max(y[1],y[3]);
sort(x+1,x+4+1);
sort(y+1,y+4+1);
double len=x[3]-x[2];
double height=y[3]-y[2];
ans=len*height;
}
printf("%.2f\n",ans);
}
return 0;
}
已AC;
嗯 刚开始做这题时 脑子是空白的 后来参考了一些大牛的代码大概就想出来了。。。
矩形不重叠的情况很好分析 就不说了
而矩形如果重叠
注意对角线是从左下角到右上角 不管你矩形如何重叠谁上谁下谁左谁右 重叠的矩形的长依然是第三大的x减去第二大的x
高依然是第三大的y减去第二大的y
所以排个序 然后就做出来了。。。
附上原代码网址http://acm.hdu.edu.cn/discuss/problem/post/reply.php?postid=21781&messageid=1&deep=0
本文详细解读了一个代码实例,用于解决矩形重叠时的面积计算问题。通过排序和比较边界坐标,作者巧妙地计算了重叠矩形的实际面积。文章深入分析了矩形重叠条件,提供了清晰的逻辑流程和代码实现,帮助读者理解复杂场景下的几何计算。

被折叠的 条评论
为什么被折叠?



