HDU-2056-Rectangles
思路:
通过画图可知
重叠矩形的主对角线
左下端点X值取决于X1 X3大的那个 Y值同理 当然前提是X1 X3 Y1 Y3满足主对角线的端点坐标
而右上端点的X值取决于X2 X4小的那个 Y值同理
再画图分析 易得 重叠矩形的对角线 如果是主对角线 那么 面积不为0, 不是主对角线 则不重叠
#include<iostream>
#include<algorithm>
#include<iomanip>
using namespace std;
int main()
{
double X1, X2, X3, X4, Y1, Y2, Y3, Y4;
while(cin>>X1>>Y1>>X2>>Y2>>X3>>Y3>>X4>>Y4)
{
// 确保输入坐标表示的是主对角线
if(X1>X2)
swap(X1, X2);
if(Y1>Y2)
swap(Y1, Y2);
if(X3>X4)
swap(X3, X4);
if(Y3>Y4)
swap(Y3, Y4);
// 重叠的矩形 主对角线端点坐标
double x1, x2, y1, y2;
x1=X1>X3? X1:X3;
y1=Y1>Y3? Y1:Y3;
x2=X4<X2? X4:X2;
y2=Y4<Y2? Y4:Y2;
if(y1>y2||x1>x2)// 这样也AC了 看来测试数据对精度要求不大
cout<<"0.00"<<endl;
else
cout<<fixed<<setprecision(2)<<(x2-x1)*(y2-y1)<<endl;
}
return 0;
}

浙公网安备 33010602011771号