【蓝桥备赛】矩形总面积——计算几何

这篇具有很好参考价值的文章主要介绍了【蓝桥备赛】矩形总面积——计算几何。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目链接

矩形总面积

个人思路

根据题意,两个矩形如果存在重叠部分,只会是这三种其一。不过再仔细观察这些边的关系,容易得到以下计算重叠区域大小的方法。
【蓝桥备赛】矩形总面积——计算几何,# 蓝桥,算法,蓝桥杯,c++,java,几何学

	// 其中变量含义见题面
	ll width = max(0LL, min(x2, x4) - max(x1, x3));
    ll height = max(0LL, min(y2, y4) - max(y1, y3));

那么,这道题的解法就是,计算两个矩形的面积再减去重复部分(如果有重复部分的话)
看完下方的代码,可能有人奇怪为什么没去判断 widthheight的大小,的确我省去了这一个判断。这是因为,在一个平面内,如果两个矩形有重叠部分的话,计算公式只能是上面那段代码计算方法,不明白可以对照图形来看,而当他们之间的差值为负的,那么就被我的 max 语句定为0了,只要widthheight的值有一个为0,那么在减去的时候,就会减去的就是0。文章来源地址https://www.toymoban.com/news/detail-821770.html

if(width > 0 && height > 0)

参考代码

Java

import java.util.Scanner;

// AC
public class Main {
    static long x1, y1, x2, y2, x3, y3, x4, y4;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 左下
        x1 = sc.nextLong();
        y1 = sc.nextLong();
        // 右上
        x2 = sc.nextLong();
        y2 = sc.nextLong();
        // 左下
        x3 = sc.nextLong();
        y3 = sc.nextLong();
        // 右上
        x4 = sc.nextLong();
        y4 = sc.nextLong();
        long res = (x2 - x1) * (y2 - y1) + (x4 - x3) * (y4 - y3);
        // 计算重复区域面积
        long width = Math.max(0, Math.min(x2, x4) - Math.max(x1, x3));
        long height = Math.max(0, Math.min(y2, y4) - Math.max(y1, y3));
        
        res -= width * height;

        System.out.println(res);
    }
}

C/C++

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

// AC
int main()
{
    ll x1, y1, x2, y2, x3, y3, x4, y4;
    cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3 >> x4 >> y4;
    ll res = (x2 - x1) * (y2 - y1) + (x4 -x3) * (y4 - y3);
    ll width = max(0LL, min(x2, x4) - max(x1, x3));
    ll height = max(0LL, min(y2, y4) - max(y1, y3));
    res -= width * height;
    cout << res;
    return 0;
}

到了这里,关于【蓝桥备赛】矩形总面积——计算几何的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java 编程实例:相加数字、计算单词数、字符串反转、元素求和、矩形面积及奇偶判断

    示例 输出 解释 首先,声明两个 int 类型的变量 x 和 y ,并分别赋值为 5 和 6。 然后,使用 + 运算符将 x 和 y 相加,并将结果赋给变量 sum 。 最后,使用 System.out.println() 方法打印 sum 的值。 示例 输出 解释 首先,导入 Scanner 类,用于读取用户输入。 然后,声明三个 int 类型的

    2024年03月19日
    浏览(85)
  • 蓝桥杯备赛day02 -- 算法训练题 拿金币Java

    目录 题目: 问题描述 输入格式 输出格式 解题过程 第一步 定义dp数组 第二步 确定 dp 数组递推公式  第三步 dp数组的初始化 第四步 dp数组的遍历顺序 第五步 举例说明  报错:内存超限 用dp数组去存储位置上的金币 dp数组从二维降为一维  收获:   有一个N x N的方格,每一个

    2024年01月17日
    浏览(43)
  • 蓝桥杯备赛 day 2 —— 二分算法(C/C++,零基础,配图)

    目录 🌈前言: 📁 二分的概念 📁 整数二分 📁 二分的模板 📁 习题 📁 总结          这篇文章主要是准备蓝桥杯竞赛同学所写,为你更好准备蓝桥杯比赛涉及的算法知识点。不知道你是否苦恼于不知算法从何学起,苦恼于网上资料稀少,或者复杂难懂,这篇文章就是

    2024年01月18日
    浏览(55)
  • 蓝桥杯备赛 day 1 —— 递归 、递归、枚举算法(C/C++,零基础,配图)

    目录 🌈前言 📁 枚举的概念 📁递归的概念     例题: 1. 递归实现指数型枚举 2. 递归实现排列型枚举 3. 递归实现组合型枚举 📁 递推的概念    例题: 斐波那契数列 📁习题 1. 带分数 2. 反硬币 3. 费解的开关 📁 总结                  这篇文章主要是准备蓝桥杯竞

    2024年02月03日
    浏览(46)
  • 编写一个类为Rectangle。该类有两个属性: 长(length)和宽(width),计算矩形面积周长。写另外一个类,来检验自己编写的类中的方法是否正确。

    编写一个类为Rectangle. 该类有两个属性: 长(length)和宽(width)默认值为1,该两个变量为私有的,即private. 其它方法为: 构造方法:public Rectangle();   Public Rentangle(double length, double width); 方法: 矩形对象调用该方法,可以得到面积:public double getArea() 矩形对象调用该方法,可以

    2024年02月05日
    浏览(43)
  • 223. 矩形面积 Python

    给你 二维 平面上两个 由直线构成且边与坐标轴平行/垂直 的矩形,请你计算并返回两个矩形覆盖的总面积。 每个矩形由其 左下 顶点和 右上 顶点坐标表示: 第一个矩形由其左下顶点 (ax1, ay1) 和右上顶点 (ax2, ay2) 定义。 第二个矩形由其左下顶点 (bx1, by1) 和右上顶点 (bx2, by

    2024年02月10日
    浏览(34)
  • LeetCode 75 - 01 : 最小面积矩形

    解题思路:一个矩形可以通过一条对角线也就是两个点唯一确认。那么可以先将所有的点加入哈希表,然后枚举两个点,如果这两个点x坐标和y坐标都不一致就可以构成一条对角线。最后判断由这条对角线确定的矩形的另外两个点是否在哈希表中,如果存在就是一个合法的矩

    2024年02月07日
    浏览(37)
  • 【leetcode热题100】接雨水、直方图最大矩形面积、矩阵中最大的矩形

    题目链接 题目描述: 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height = [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝

    2024年02月03日
    浏览(54)
  • 定义矩形类,求其面积和周长(java)

    编写一个 矩形 类 R ectangle,该类拥有: 两个 成员变量 : Length(私有,双精度型); // 存放矩形的长;      Width(私有,双精度型); // 存放矩形的宽;       两个构造方法 :     1.Rectangle ( )            // 将高和宽设为0          2.Rectangle (double l,double W

    2024年04月12日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包