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;
}

  

posted @ 2015-08-21 10:19  _SunDaSheng  阅读(222)  评论(0编辑  收藏  举报