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