矩形面积交-进阶题7

矩形面积交

题目

  • 问题描述
     平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。

  • 输入说明
    输入仅包含两行,每行描述一个矩形。
    在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示。

  • 输出说明
    输出仅包含一个实数,为交的面积,保留到小数后两位。

  • 输入范例

    1 1 3 3
    2 2 4 4

  • 输出范例

    1.00

解题思路

  • 本题思路是利用 区间重叠计算 + 模拟判断 来求两个矩形的相交面积。由于题目中矩形的边均平行于坐标轴,因此可以将矩形在 x 轴方向和 y 轴方向分别看作两个区间。首先读入两个矩形的对角点坐标,由于输入的两个点不一定分别是左下角和右上角,需要先用 min 和 max 分别确定每个矩形的左右边界和上下边界。然后分别计算两个矩形在 x 方向的重叠长度 和 y 方向的重叠长度:x 方向为 min(右边界) - max(左边界),y 方向为 min(上边界) - max(下边界)。如果两个矩形没有相交,则计算结果可能为负值,因此需要使用 max(0, ...) 保证重叠长度不小于 0。最后将 x 方向重叠长度与 y 方向重叠长度相乘 即可得到两个矩形的交面积,并按照题目要求保留两位小数输出结果。

整体代码

cpp 复制代码
#include <iostream>
#include <iomanip>
#include <algorithm>
using namespace std;

int main()
{
    double x1, y1, x2, y2;
    double x3, y3, x4, y4;

    cin >> x1 >> y1 >> x2 >> y2;
    cin >> x3 >> y3 >> x4 >> y4;

    // 统一得到每个矩形的左右上下边界
    double left1 = min(x1, x2);
    double right1 = max(x1, x2);
    double bottom1 = min(y1, y2);
    double top1 = max(y1, y2);

    double left2 = min(x3, x4);
    double right2 = max(x3, x4);
    double bottom2 = min(y3, y4);
    double top2 = max(y3, y4);

    // 计算x方向和y方向的重叠长度
    double overlapX = max(0.0, min(right1, right2) - max(left1, left2));
    double overlapY = max(0.0, min(top1, top2) - max(bottom1, bottom2));

    // 交面积
    double area = overlapX * overlapY;
    
    cout << fixed << setprecision(2) << area << endl;

    return 0;
}

注意事项

  • 注意输入点不一定是左下和右上。

英文段落翻译

自己翻译

ROM(只读存储器)包含了一个小的指令和叫做引导装入程序的数据集合。引导装入程序指令告诉一个数字设备怎样启动通常引导装入程序运行自我测试来查明硬件是否运行正确,并且可能也证实基础程序没有被损坏,他随后装载操作系统进入RAM。然而是暂时的和易失性的ROM是更加持久的和不易失的。ROM的目录甚至在设备已经关闭的时候都可以保留。

大部分计算机有着另外的存储设备,叫做海量存储器(或者第二存储器)系统。使用在个人计算机上常见的有三种类型:磁性的光学的以及固态的。

磁性存储器通过磁化微小的颗粒在一个硬盘或者磁带表面来表示数据。虽然第一台个人计算机使用和磁带来存储,但是软磁盘存储不久后开始变得可行。现今最常见的磁性存储科技的例子是磁盘或者磁盘驱动器。

AI翻译

只读存储器(ROM)包含一小组称为引导加载程序的指令和数据。引导加载程序的指令告诉数字设备如何启动。通常,引导加载程序会执行自检,以确定硬件是否运行正常,并可能验证基本程序是否未被损坏。随后,它将操作系统加载到随机存取存储器(RAM)中。RAM是临时性且易失的,而ROM则更具永久性且非易失。即使设备关闭,ROM中的内容仍保持不变。

大多数计算机还配备有称为大容量存储(或辅助存储)系统的附加存储设备。个人计算机常用的有三种类型:磁存储、光存储和固态存储。

磁存储通过在磁盘或磁带表面磁化微观粒子来表示数据。首批个人计算机使用盒式磁带进行存储,但软盘存储很快便问世。如今,磁存储技术最常见的例子是磁盘或称硬盘驱动器(HDD)。

单词打卡

下一篇

待续

相关推荐
y = xⁿ2 小时前
【LeetCodehot100】T24:两两交换链表中的节点 T25:K个一组翻转链表
java·网络·数据结构·算法·链表
nananaij2 小时前
【LeetCode-04 数组异或操作 python解法】
python·算法·leetcode
少许极端2 小时前
算法奇妙屋(三十一)-递归、回溯与剪枝的综合问题 4
算法·剪枝·回溯·递归
mjhcsp2 小时前
C++随机调整(Random Adjustment):优化算法的核心随机策略
java·c++·算法
Yupureki2 小时前
《C++实战项目-高并发内存池》6.内存释放流程
c语言·开发语言·数据结构·c++·算法·哈希算法
charlie1145141912 小时前
嵌入式现代C++开发——三路比较运算符
开发语言·c++·学习·算法·嵌入式·编程指南
2401_900151542 小时前
C++编译期正则表达式
开发语言·c++·算法
倾心琴心2 小时前
【agent辅助pcb routing coding学习】实践1 kicad pcb 格式讲解
算法·agent·pcb·eda·routing
仙俊红2 小时前
LeetCode493周赛T3,前后缀分解
数据结构·算法·leetcode