题目链接

http://acm.csu.edu.cn:20080/csuoj/problemset/problem?pid=1986

题目

Description

阴阳师子浩君,最近从《初等数论》,《线性代数》,《组合数学》三大玄学宝典中,取得了玄学的精髓,发现,当画出两个矩形组成的样子的图案时候,就很有可能出现SSR。 现在子浩君正研究《概率与统计》第四大宝典,所以,他需要统计这些图案的数据,子浩君有一项很重要的指标,就是该图形的面积,需要测量,但是,子浩君还需要研究宝典的精髓,所以这个任务就交给了作为一个ACMer的您,来帮他统计这项数据。

由于是要画符,如果最后组成的图案不能一笔画出,即两个矩形的边界一个公共点都没有的话,则输出不合法“Invalid!”。

Input

第一行为测试数据组数T(1<=T<=100)

第二行包括四个整数x1,y1,x2,y2,为第一个矩形某对角线两端端点的坐标。

第三行包括四个整数x3,y3,x4,y4,为第二个矩形某对角线两端端点的坐标。

矩形的每条边均和坐标轴平行。

输入保证其绝对值都在109范围以内,且保证输入的矩形不会退化为一个线段和一个点,即保证x1!=x2,y1!=y2,x3!=x4,y3!=y4。

Output

若两矩形相交,则输出矩形并的面积,若矩形的边界没有相交,则输出字符串“Invalid!”,不包括引号。

Sample Input

3

1 1 3 3
2 2 4 4 1 1 2 2
2 2 3 3 1 1 2 2
3 3 4 4

Sample Output

7
2
Invalid!

题解

首先理解题意,一个矩形包含在另一个矩形里不合法!!!因为不能一笔画出,一开始理解为矩形相交,WA惨了

然后就是如何计算矩形相交面积的基础问题了,我们先假设两个矩形相交,那么相交矩形的左下角坐标是这样的;

横坐标:两个矩形左下角横坐标的较大值

纵坐标:两个矩形左下角纵坐标的较大值

相交矩形右上角坐标:

横坐标:两个矩形右上角横坐标的较小值

纵坐标:两个矩形右上角纵坐标的较小值

然后此时如果右上角坐标比左下角小,则不相交,然后特判一个矩形在另一个矩形内部的情况,均输出invalid,其他情况下,用左下角和右上角坐标计算出面积,输出面积即可

AC代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main() {
int T;
scanf("%d", &T);
while (T--) {
ll x1, y11, x2, y22, x3, y33, x4, y44;
scanf("%lld%lld%lld%lld", &x1, &y11, &x2, &y22);
scanf("%lld%lld%lld%lld", &x3, &y33, &x4, &y44);
ll minx1 = min(x1, x2), miny1 = min(y11, y22);
ll maxx1 = max(x1, x2), maxy1 = max(y11, y22);
ll minx2 = min(x3, x4), miny2 = min(y33, y44);
ll maxx2 = max(x3, x4), maxy2 = max(y33, y44);
ll minx = max(minx1, minx2), miny = max(miny1, miny2);
ll maxx = min(maxx1, maxx2), maxy = min(maxy1, maxy2);
if (minx > maxx || miny > maxy || (minx > minx1 && miny > miny1 && maxx < maxx1 && maxy < maxy1) || (minx > minx2 && miny > miny2 && maxx < maxx2 && maxy < maxy2)) {
printf("Invalid!\n");
continue;
}
else {
ll ans = (maxx1 - minx1) * (maxy1 - miny1) - (maxx - minx) * (maxy - miny) + (maxx2 - minx2) * (maxy2 - miny2);
printf("%lld\n", ans);
}
}
return 0;
}
/**********************************************************************
Problem: 1986
User: Artoriax
Language: C++
Result: AC
Time:0 ms
Memory:2024 kb
**********************************************************************/

CSU-1986 玄学的更多相关文章

  1. csu 1812: 三角形和矩形 凸包

    传送门:csu 1812: 三角形和矩形 思路:首先,求出三角形的在矩形区域的顶点,矩形在三角形区域的顶点.然后求出所有的交点.这些点构成一个凸包,求凸包面积就OK了. /************** ...

  2. CSU 1503 点到圆弧的距离(2014湖南省程序设计竞赛A题)

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1503 解题报告:分两种情况就可以了,第一种是那个点跟圆心的连线在那段扇形的圆弧范围内,这 ...

  3. CSU 1120 病毒(DP)

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1120 解题报告:dp,用一个串去更新另一个串,递推方程是: if(b[i] > a ...

  4. CSU 1116 Kingdoms(枚举最小生成树)

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1116 解题报告:一个国家有n个城市,有m条路可以修,修每条路要一定的金币,现在这个国家只 ...

  5. CSU 1113 Updating a Dictionary(map容器应用)

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1113 解题报告:输入两个字符串,第一个是原来的字典,第二个是新字典,字典中的元素的格式为 ...

  6. CSU 1333 Funny Car Racing (最短路)

    题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1333 解题报告:一个图里面有n个点和m条单向边,注意是单向边,然后每条路开a秒关闭b秒 ...

  7. CSU 1337 搞笑版费马大定理(2013湖南省程序设计竞赛J题)

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1337 解题报告:虽然x和y的范围都是10^8,但是如果a 是大于1000的话,那么a^3 ...

  8. CSU 1328 近似回文词(2013湖南省程序设计竞赛A题)

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1328 解题报告:中文题题意就不说了.还好数据不大,只有1000,枚举回文串的中心位置,然 ...

  9. POJ 1986 Distance Queries(Tarjan离线法求LCA)

    Distance Queries Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 12846   Accepted: 4552 ...

随机推荐

  1. 20145238-荆玉茗《Java程序设计》课程总结

    每周读书笔记链接汇总 第一周读书笔记: 第二周读书笔记: 第三周读书笔记: 第四周读书笔记: 第五周读书笔记: 第六周读书笔记: 第七周读书笔记: 第八周读书笔记: 第九周读书笔记: 实验报告链接汇总 ...

  2. 物流管理系统(数据库+后台+springMVC+Mybatis+layui)

    数据库:mysql create database WBG_logistics; use WBG_logistics; #1管理员表 create table admin( a_id int prim ...

  3. U盘装CentOS6.4

    1.打开UltraISO,依次点击“文件”>“打开”,选择“CentOS-6.4-i386-bin-DVD1.iso”文件. 2.“启动”>“写入硬盘映像”,在“硬盘驱动器选择u盘”,写入 ...

  4. Android Studio项目中三种依赖的添加方式

    通常一个AS项目中的依赖关系有三种,一是本地依赖(主要是对本地的jar包),二是模块依赖,三是远程依赖:添加这些依赖的目的在于上我们想要在项目的某一个模块中使用其中的功能,比如okttp这个网络框架库 ...

  5. 优化tableView性能(针对滑动时出现卡的现象)

    优化tableView性能(针对滑动时出现卡的现象) 在iOS应用中,UITableView应该是使用率最高的视图之一了.iPod.时钟.日历.备忘录.Mail.天气.照片.电话.短信. Safari ...

  6. 1801: [Ahoi2009]chess 中国象棋

    Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 2520  Solved: 1524[Submit][Status][Discuss] Descripti ...

  7. P3366 最小生成树【模板+Kruscal讲解】

    此题数组大小非常重要 算法过程: 现将全部边按照权值(由小到大)排序. 按顺序(同上)考虑每条边,只要这条边和之前已选择的边不构成圈,就保留这条边,否则放弃这条边. 具体算法 成功选择(n-1)条边后 ...

  8. Session的生命同期

    一.什么是Session,怎么用 Session是存放用户与web服务器之间的会话,即服务器为浏览器开辟的存储空间. 由于浏览器与服务器之间的会话是无状态(无状态的意思是会话之间无关联性,无法识别该用 ...

  9. java-访问控制修饰符

    访问权限 public    任何情况都可以访问 默认包 本包范围内可以访问到 protect       同一个包里的所有类所可以访问:所有子类(子类可以不和父类在同一个包)都可以访问 privat ...

  10. array_unique() - 去除数组中重复的元素值

      array_unique() 定义和用法 array_unique() 函数移除数组中的重复的值,并返回结果数组. 当几个数组元素的值相等时,只保留第一个元素,其他的元素被删除. 返回的数组中键名 ...