矩形相交问题

给出左下和右上的坐标,判断矩形是否相交,并求出相交的区域
思路:从矩形中点间的横纵坐标距离判断
矩形A:左下坐标(A1,A2)右上坐标(A3,A4)
矩形B:左下坐标(B1,B2)右上坐标(B3,B4)
那么只要满足
abs(A1+A3-B1-B3)< A3-A1+B3-B1
abs(A2+A4-B2-B4)< A4-A2+B4-B2
即可证明两个矩阵有相交区域
相交区域位置
左下坐标(max(A1,B1),max(A2,B2))
右上坐标(min(A3,B3),min(A4,B4))

C++代码案例,来自某次力扣周赛
求矩形相交区域内可以放最大正方形的面积

class Solution {inline bool ok(vector<int>&t1,vector<int>&t2,vector<int>&t3,vector<int>&t4){//判断两个矩形能否相交return abs(t1[0]+t2[0]-t3[0]-t4[0])<=t2[0]-t1[0]+t4[0]-t3[0]&&abs(t1[1]+t2[1]-t3[1]-t4[1])<=t2[1]-t1[1]+t4[1]-t3[1];}
public:long long largestSquareArea(vector<vector<int>>& bottomLeft, vector<vector<int>>& topRight) {//左下 右上int d=0;int n=bottomLeft.size();for(int i=0;i<n;i++){for(int j=0;j<i;j++){if(ok(bottomLeft[i],topRight[i],bottomLeft[j],topRight[j])){d=max(min(min(topRight[i][0],topRight[j][0])-max(bottomLeft[i][0],bottomLeft[j][0]),//求相交区域的长min(topRight[i][1],topRight[j][1])-max(bottomLeft[i][1],bottomLeft[j][1])),d);//求相交区域的宽}}}return d*1ll*d; }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/757954.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

科研学习|论文解读——了解在线环境中的多数观点形成过程:Facebook的探索性方法(IPM, 2018)

论文标题 Understanding the majority opinion formation process in online environments: An exploratory approach to Facebook 摘要 在在线社区的社会互动过程中,多数观点经常被观察到,但很少有研究用实证数据来解决这一问题。为了确定一个合适的理论视角来解释在…

软件推动开放自动化落地

当你唯一拥有的是一把锤子时&#xff0c;你周围的一切都是钉子。 软件是硬件设备的护城河&#xff0c;国际自动化厂商不遗余力地开发各种新型工业软件&#xff0c;其战略站在应用的制高点。以前我们追求硬件兼容&#xff0c;现在我们要致力于应用引领。如果我们拥有强大的SCADA…

js封装SDK 在VUE、小程序、公众号直接调用js调用后端接口(本文以vue项目为例)

1.封装一个js文件msgSdk.js 注意&#xff1a;需要修改这个请求地址 apiServiceAddress ;(function () {if (window.msgSdk) {return}var msgSdk (function () {var m_msgSdk thisvar apiServiceAddress"http://172.12.14.5:8000"this.I_SendHTTPRequest functi…

Linux账号管理与ACL权限设置

文章目录 Linux的账户和用户组用户标识符&#xff1a;UID与GID用户账号用户组&#xff1a;有效与初始用户组groups&#xff0c;newgrp 账号管理新增与删除用户&#xff1a;useradd、相关配置文件、passwd、usermod、userdel用户功能&#xff1a;id、finger、chfn、chsh新增与删…

HANA VIEW 用 ABAP 创建CDS VIEW,在生成ODATA

这里我们做ADT来创建 场景介绍:把hana中的一个底表,创建成ABAP的 CDS VIEW ,在把CDS VIEW 生成 OData 服务。 一、创建CDS Table Function 红框内根据自身情况填写 选择 Define Table Function with Parameters 创建 Data Definition 完整代码,定义 结构 , 也可以定义参…

Grok ChatLaw

Grok是马斯克旗下的AI公司推出的一款革命性产品&#xff0c;它提供了创新且可靠的数据分析和决策支持平台1。Grok的技术解决方案主要包括以下几个方面&#xff1a; 强大的数据处理能力&#xff1a;Grok能够处理大规模的数据&#xff0c;并从中提取出有价值的信息和洞察。 先进…

centos7安装jdk详细步骤(yum安装与手动安装)

centos7安装jdk详细步骤&#xff08;yum安装与手动安装&#xff09; 一、使用yum安装1. 准备工作2. 检查系统是否自带jdk3. 安装jdk 二、手动安装jdk1. 下载上传jdk2. 安装jdk3. 配置环境变量 一、使用yum安装 1. 准备工作 如果你的机器可以联网可以使用此方法 ping www.baidu…

Java基础学习笔记二

Java的加载与执行 Java既是编译型语言又是解释型语言 question&#xff1a;为什么JVM可以跨平台执行 answer &#xff1a; Java虚拟机&#xff08;JVM&#xff09;之所以能够跨平台执行&#xff0c;是因为它在不同操作系统上提供了一个统一的运行环境&#xff0c;实现了Java程…

‘‘ is not a package AttributeError: module ‘‘ has no attribute ‘__path__‘报错解决

报错&#xff1a; No module named ‘ldm.util’; ‘ldm’ is not a package AttributeError: module ‘ldm’ has no attribute ‘__ path__’ 原因&#xff1a; 1.首先这个引用没有被画横线&#xff0c;说明包存在&#xff0c;并且也在包目录底下添加了__init__.py文件 &am…

C++ Qt开发:QUdpSocket实现组播通信

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍如何运用QUdpSocket组件实现基于UDP的组播通信…

四川易点慧电子商务抖音小店:值得信赖的购物新选择

随着互联网的飞速发展&#xff0c;电子商务平台如雨后春笋般涌现&#xff0c;为消费者提供了前所未有的购物便利。在众多电商平台中&#xff0c;四川易点慧电子商务抖音小店以其独特的魅力和优质的服务&#xff0c;赢得了广大消费者的青睐和信任。 四川易点慧电子商务抖音小店以…

C++中的Union: 内存与类型转换技巧

在C中&#xff0c;union是一种特殊的数据类型&#xff0c;允许在相同的内存位置存储不同类型的数据。union提供了一种高效地利用内存的方式&#xff0c;但同时也要求开发者更加小心地处理数据以避免类型错误。 1. 基本定义 union定义了一个可以存储多种类型但任意时刻只能存储…

Python之进程池、阻塞模式、非阻塞模式、进程间的通信、queue

非阻塞模式 # 当需要创建的子进程数量不多时&#xff0c;可以直接利用multiprocessing中的Process动态成生多个进程 # 但如果是上百甚至上千个目标&#xff0c;手动的去创建进程的工作量巨大&#xff0c;此时就可以用到multiprocessing模块提供的Pool方法. # 初始化Poo1时&…

HTTPS 为什么比HTTP安全?

HTTPS&#xff08;Hyper Text Transfer Protocol Secure&#xff09;比 HTTP&#xff08;Hyper Text Transfer Protocol&#xff09;更安全&#xff0c;主要是因为 HTTPS 在 HTTP 的基础上添加了 SSL/TLS 协议&#xff0c;用于对数据进行加密&#xff0c;保证数据在传输过程中的…

数据库中SQL语句where 1=1和where 1=0

1、 背景 在实际的数据库查询中&#xff0c;常常会看到一些特殊的SQL语句构造&#xff0c;如WHERE 11、WHERE 10等&#xff0c;它们虽然看起来有些奇特&#xff0c;但在实际应用中确实有一些妙用。 其中WHERE 11用于动态构建查询条件&#xff0c;而WHERE 10通常用于强制不返回…

[C++] 实现Union

前几天学了replacement new写的小玩意 #include <iostream> #include <functional> #include <string>// 可能因为const char*类型的缘故 // 用const ArgsT&&...会报错// 测试用类 struct Test {Test(){std::cout << "constructed"…

Gif动态闪图如何制作?教你1分钟快速制作

动态文字闪图是一种独特而有趣的图像效果&#xff0c;通过将文字以闪烁、跳动或变换的方式呈现&#xff0c;给人一种动态感和视觉冲击力。如果你想制作自己的动态文字闪图&#xff0c;下面是一些简单的方法来帮助你完成这个任务。使用在线闪图制作网站-GIF5工具网&#xff0c;无…

国内外15款AI搜索引擎汇总

AI大模型的一个痛点就是训练数据有截止日期&#xff0c;例如chatgpt的训练数据截止日期是2021年10月。这导致模型回答截止日期之后产生的新闻事件或者专业知识时不够准确。 将AI和搜索引擎结合起来&#xff0c;似乎是一种解决方式。 目前&#xff0c;国内外公布了不少AI搜索引…

JNI入门学习 数据类型[一]

基本数据类型&#xff1a; Java 中的 int 对应 JNI 中的 jint。Java 中的 boolean 对应 JNI 中的 jboolean。Java 中的 float 对应 JNI 中的 jfloat。Java 中的 double 对应 JNI 中的 jdouble。Java 中的 byte 对应 JNI 中的 jbyte。Java 中的 short 对应 JNI 中的 jshort。Jav…

【09】进阶JavaScript事件循环Promise

一、事件循环 浏览器的进程模型 何为进程? 程序运行需要有它自己专属的内存空间,可以把这块内存空间简单的理解为进程 每个应用至少有一个进程,进程之间相互独立,即使要通信,也需要双方同意。 何为线程? 有了进程后,就可以运行程序的代码了。 运行代码的「人」称之…