题目
题目链接
题解根据第一行数据确定第一个矩形的上下左右边界坐标; 根据第二行数据确定第二个矩形的上下左右边界坐标;
若二者相交,则相交的矩形一定是夹在这些边界坐标之间(这是比较抽象的理解,理解不了就算了) 或者通过画图也可以发现,两个矩形上边界尽可能靠下的就是相交矩形的上边界,下边界尽可能靠上的是相交矩形的下边界,同理,两个矩形左边界的较大者是相交矩形的左边界,两个矩形右边界的较小者是相交矩形的右边界,这就体现了夹在中间的感觉。 上下边界坐标差乘以左右边界坐标差即为相交矩形面积。
BUT!!! 二者不相交的话,正确答案应该为0.00,但是仍按上述方式来计算会得到负数乘以负数,仍为正数的结果,显然不对。 因此我们要进行特判。 当上下边界坐标差和左右边界坐标差存在一个为非正数时,直接输出0.00,表示相离。
代码#include
using namespace std;
const double esp = 1e-8;
double x1, x2, x3, x4, ya, y2, y3, y4; // 因为y1好像在头文件中被定义过,不能用就换了ya
double l1, l2, r1, r2, d1, d2, u1, u2;
double l, r, u, d;
int main()
{
scanf("%lf%lf%lf%lf%lf%lf%lf%lf", &x1, &ya, &x2, &y2, &x3, &y3, &x4, &y4);
l1 = min(x1, x2); r1 = max(x1, x2); // 第一个矩形的左边界和右边界
l2 = min(x3, x4); r2 = max(x3, x4); // 第二个矩形的左边界和右边界
d1 = min(ya, y2); u1 = max(ya, y2); // 第一个矩形的下边界和上边界
d2 = min(y3, y4); u2 = max(y3, y4); // 第二个矩形的下边界和上边界
l = max(l1, l2); r = min(r1, r2); d = max(d1, d2); u = min(u1, u2); // 相交部分的左边界为两个矩形左边界的较大者,有边界为二者右边界的较小者,上边界为二者上边界的较小者,下边界为二者下边界的较大者
if(r-l
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?