B. 腾讯益智小游戏—矩形面积交(简单)

  • 1000ms
  • 262144K
 

腾讯游戏开发了一款全新的编程类益智小游戏,最新推出的一个小游戏题目是关于矩形面积交的。聪明的你能解出来吗?看下面的题目接招吧。

给定二维平面上 nn 个与坐标轴平行的矩形,每个矩形是形如 \lbrace (x,y) | x,y \in R, x_1 \le x \le x_2, y_1 \le y \le y_2 \rbrace{(x,y)∣x,y∈R,x1​≤x≤x2​,y1​≤y≤y2​} 的点集,你的任务是对于每个矩形,计算它与其他矩形的交集。

具体来说,令 area(i,j)area(i,j) 表示第 ii 个矩形与第 jj 个矩形的交集面积,你需要对于 i = 1, 2, \cdots, ni=1,2,⋯,n,计算 \displaystyle\sum_{1 \le j \le n, i \neq j, area(i,j)>0} 11≤j≤n,i​=j,area(i,j)>0∑​1 和 \displaystyle\sum_{1 \le j \le n,i \neq j} area(i,j)1≤j≤n,i​=j∑​area(i,j) 的值。

输入格式

输入包含多组测试数据,输入的第一行包含一个正整数 TT,表示测试数据的组数。

接下来依次描述每组测试数据,对于每组测试数据:

第一行包含一个正整数 nn,表示矩形的数量。

接下来 nn 行,每行包含四个非负整数 x_1, y_1, x_2x1​,y1​,x2​ 和 y_2y2​,表示一个矩形 \lbrace (x,y) | x,y \in R, x_1 \le x \le x_2, y_1 \le y \le y_2 \rbrace{(x,y)∣x,y∈R,x1​≤x≤x2​,y1​≤y≤y2​},保证有 x_1 < x_2x1​<x2​ 和 y_1 < y_2y1​<y2​。

输出格式

对于每组测试数据,输出 nn 行,其中第 ii 行包含两个非负整数,用恰好一个空格隔开,这里第 ii 行的第一个整数表示与输入给出的第 ii 个矩形严格有交集的矩形数量(不含第 ii 个矩形),第二个整数表示这些矩形分别与第 ii 个矩形的交集面积之和。

数据范围

所有测试数据的 nn 之和不超过 50005000,且坐标均为不超过 50005000 的非负整数。

样例输入复制

2
2
0 0 1 1
1 1 2 2
3
0 0 2 6
1 1 4 4
1 3 3 9

样例输出复制

0 0
0 0
2 6
2 5
2 5 矩形交集。
给出坐标点,求矩形交集个数与单位面积。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll; struct Node{
int x1,y1,x2,y2;
}a[]; int calc(int a1x1,int a1y1,int a1x2,int a1y2,int a2x1,int a2y1,int a2x2,int a2y2){
int c=;
ll m1=max(min(a1x1,a1x2),min(a2x1,a2x2));
ll n1=max(min(a1y1,a1y2),min(a2y1,a2y2));
ll m2=min(max(a1x1,a1x2),max(a2x1,a2x2));
ll n2=min(max(a1y1,a1y2),max(a2y1,a2y2));
if(m2>m1&&n2>n1) return ;
return ;
}
ll cals(int a1x1,int a1y1,int a1x2,int a1y2,int a2x1,int a2y1,int a2x2,int a2y2){
int c=;
ll m1=max(min(a1x1,a1x2),min(a2x1,a2x2));
ll n1=max(min(a1y1,a1y2),min(a2y1,a2y2));
ll m2=min(max(a1x1,a1x2),max(a2x1,a2x2));
ll n2=min(max(a1y1,a1y2),max(a2y1,a2y2));
if(m2>m1&&n2>n1) return (m2-m1)*(n2-n1);
return ;
}
int main()
{
int t,n,i,j;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
for(i=;i<=n;i++){
scanf("%d%d%d%d",&a[i].x1,&a[i].y1,&a[i].x2,&a[i].y2);
}
for(i=;i<=n;i++){
int c=;
ll s=;
for(j=;j<=n;j++){
if(i==j) continue;
c+=calc(a[i].x1,a[i].y1,a[i].x2,a[i].y2,a[j].x1,a[j].y1,a[j].x2,a[j].y2);
s+=cals(a[i].x1,a[i].y1,a[i].x2,a[i].y2,a[j].x1,a[j].y1,a[j].x2,a[j].y2);
}
printf("%d %lld\n",c,s);
}
}
return ;
}

2019计蒜之道初赛4 B. 腾讯益智小游戏—矩形面积交(简单)(矩形交集)的更多相关文章

  1. 2019 计蒜之道 初赛 第二场 B. 百度AI小课堂-上升子序列(简单) ( 实现)

    题目背景 ​91029102 年 99 月 22 日,百度在 X 市 XX 中学举办的第一场 AI 知识小课堂大获好评!同学们对矩阵的掌握非常棒. 今天的 AI 知识小课堂的第二场开讲啦.本场 AI ...

  2. 2019 计蒜之道 初赛 第二场 A 百度AI小课堂-矩阵问题 ( 等差数列求和公式)

    题目背景 ​91029102 年 99 月 11 日,百度在 X 市 XX 中学举办了一场 AI 知识小课堂,本场 AI 知识小课堂老师教授了一些矩阵的相关知识,因为矩阵在 AI 人工智能中也有相当的 ...

  3. 2019计蒜之道初赛3 D. 阿里巴巴协助征战SARS(困难)(大数取余+欧拉降幂)

    阿里巴巴协助征战SARS(困难) 33.29% 1000ms 262144K   目前,SARS 病毒的研究在世界范围内进行,经科学家研究发现,该病毒及其变种的 DNA 的一条单链中,胞嘧啶.腺嘧啶均 ...

  4. 2019 计蒜之道 初赛 第一场 商汤的AI伴游小精灵

    https://nanti.jisuanke.com/t/39260 根据题意我们可以知道  这是一个树 我们只需要找到出度最大的两个点就好了 如果包含根节点的话要-- 两个点相邻的话也要-- 数据很 ...

  5. 2019 计蒜之道 初赛 第一场 商汤AI园区的n个路口(中等) (树形dp)

    北京市商汤科技开发有限公司建立了新的 AI 人工智能产业园,这个产业园区里有 nn 个路口,由 n - 1n−1 条道路连通.第 ii 条道路连接路口 u_iui​ 和 v_ivi​. 每个路口都布有 ...

  6. 2019计蒜之道初赛第3场-阿里巴巴协助征战SARS 费马小定理降幂

    题目链接:https://nanti.jisuanke.com/t/38352 发现规律之后就是算ans=2^(n-1)+4^(n-1).但是注意到n十分大是一个长度为1e5的数字.要想办法降幂. 我 ...

  7. 2017 计蒜之道 初赛 第五场 B. UCloud 的安全秘钥(简单)

    暴力. 暴力枚举$S$串的每一个长度为$m$的子串,排序判断即可. #include <iostream> #include <cstdio> #include <cst ...

  8. 2017 计蒜之道 初赛 第一场 A 阿里的新游戏

    题链:https://nanti.jisuanke.com/t/15499 这题观察图纸可知成三线段上的相邻点之间的距离有1,2,3三种情况的,同时要成线段必然是同横坐标或者纵坐标,然后我们排除掉穿过 ...

  9. 计蒜之道 初赛第一场B 阿里天池的新任务(简单)

    阿里“天池”竞赛平台近日推出了一个新的挑战任务:对于给定的一串 DNA 碱基序列 tt,判断它在另一个根据规则生成的 DNA 碱基序列 ss 中出现了多少次. 首先,定义一个序列 ww: \displ ...

随机推荐

  1. Mac下终端常用命令

    一.删除文件 1 打开终端应用程序 2 输入命令:sudo (空格) rm (空格)-r (空格)-f (空格)(注意-f后面还有空格),还要注意,全部小写. 3 把你要删的文件或者文件夹用mouse ...

  2. win7计划任务定时执行PHP脚本设置图解

    做php开发的朋友有时候会希望自己的电脑能每天定时的运行一下某个脚本,但定时执行php脚本这种概念似乎多半是在linux中才提到,下面这篇文章主要和大家分享一下在win7下如何设置计划任务,以实现定时 ...

  3. imagecopyresampled()改变图片大小后质量要比imagecopyresized()高。

    php程序中改变图片大小的函数大多数人都想到用imagecopyresized(),不过经过测试比较发现,使用imagecopyresampled()改变的图片质量更高. 下面我们来看看两者的比较结果 ...

  4. python3用pdfminer3k在线读取pdf文件

    import importlib import sys import random from urllib.request import urlopen from urllib.request imp ...

  5. Django的基础操作总结

    1:准备开始 建立一个新的project: django-admin.py startproject XXXXXX(名称) 建立一个新的App:python manage.py startapp XX ...

  6. 话说文件系统——aufs源码分析(三)【转】

    本文转载自:http://www.cnblogs.com/xie0812/p/8848185.html 1. linux中设备驱动的入口都是:module_init(xxx_init);里面注册的函数 ...

  7. Too many open files解决方案及原理

    以下是我解决Too many open files异常时学习的知识的理解和总结,如有不正确指出,敬请指出! 此问题中文搜索雷同,你可以尝试以下关键字:"file descriptor lea ...

  8. Mysql转换表存储引擎的三种方式

    或许会有一些场景需要改变表的存储引擎,例如存储日志的表如果几乎只有insert和少量的select操作,为了追求更好的插入性能有可能会需要把存储引擎更换为MyISAM.但是,本文不建议在同一个数据库中 ...

  9. Android窗口系统第一篇---Window的类型与Z-Order确定

    Android的窗口系统是UI架构很重要的一部分,数据结构比较多,细节比较多.本篇文章主要介绍窗口相关数据结构和抽象概念理解,关于[窗口部分的博客]计划如下. 1.窗口Z-Order的管理 2.应用程 ...

  10. 分享知识-快乐自己:Hibernate 中Criteria Query查询详解

    1):Hibernate 中Criteria Query查询详解 当查询数据时,人们往往需要设置查询条件.在SQL或HQL语句中,查询条件常常放在where子句中. 此外,Hibernate还支持Cr ...