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

题目链接

矩形总面积

个人思路

根据题意,两个矩形如果存在重叠部分,只会是这三种其一。不过再仔细观察这些边的关系,容易得到以下计算重叠区域大小的方法。
在这里插入图片描述

	// 其中变量含义见题面
	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。

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

相关推荐

  1. dfs ()

    2024-01-24 03:14:01       34 阅读
  2. ----基本语法总结

    2024-01-24 03:14:01       41 阅读
  3. 心得

    2024-01-24 03:14:01       43 阅读
  4. 15届(5)

    2024-01-24 03:14:01       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-24 03:14:01       91 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-24 03:14:01       97 阅读
  3. 在Django里面运行非项目文件

    2024-01-24 03:14:01       78 阅读
  4. Python语言-面向对象

    2024-01-24 03:14:01       88 阅读

热门阅读

  1. python爬虫之协程

    2024-01-24 03:14:01       43 阅读
  2. 二叉树的遍历——代码随想录算法训练营Day14

    2024-01-24 03:14:01       49 阅读
  3. k8s基础知识

    2024-01-24 03:14:01       61 阅读
  4. C++之类的声明

    2024-01-24 03:14:01       52 阅读
  5. Voc标签文件转Yolo标签文件程序

    2024-01-24 03:14:01       52 阅读
  6. Linux具体命令(三)

    2024-01-24 03:14:01       41 阅读
  7. Webpack5入门到原理9:处理字体图标资源

    2024-01-24 03:14:01       61 阅读
  8. 深入Amazon S3:实战指南

    2024-01-24 03:14:01       52 阅读
  9. mysql变量-show_compatibility_56

    2024-01-24 03:14:01       54 阅读