矩形面积交-进阶题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)。

单词打卡

下一篇

待续

相关推荐
科研前沿8 小时前
镜像视界浙江科技有限公司的关键技术突破有哪些?
大数据·人工智能·科技·算法·音视频·空间计算
嫩萝卜头儿8 小时前
2 - 复杂度收尾 + 链表经典OJ
数据结构·算法·链表·复杂度
星马梦缘8 小时前
算法设计与分析 作业二 答案与解析
算法·图论·dfs·bfs·floyd-warshall·bellman_ford·多源最短路
玛丽莲茼蒿8 小时前
Leetcode hot100 每日温度【中等】
算法·leetcode·职场和发展
cjp5609 小时前
009.UG二次开发,任务环境草图优化3(高级功能生成直线)
算法
样例过了就是过了9 小时前
LeetCode热题100 分割等和子集
数据结构·c++·算法·leetcode·动态规划
逻辑驱动的ken9 小时前
Java高频面试考点18
java·开发语言·数据库·算法·面试·职场和发展·哈希算法
北顾笙9809 小时前
day38-数据结构力扣
数据结构·算法·leetcode
m0_629494739 小时前
LeetCode 热题 100-----14.合并区间
数据结构·算法·leetcode
xin_nai9 小时前
LeetCode热题100(Java)(5)普通数组
算法·leetcode·职场和发展