Blocked Billboard II
前言
今天比赛真的状态不好(腐了一小会),导致差点爆0。
这个题解真的是在非常非常专注下写出来的,要不然真的心态崩。
刚换了域名,发现了美化脚本的bug,有点担心(汗-_-||)。
题目
题目描述
奶牛Bassie想要覆盖一大块广告牌,她在之前已经覆盖了一小部分广告牌(但覆盖的这块面积不一定在广告牌上)
现在她要取一块足够大的布来将剩下的部分覆盖,问至少要多大的矩形的布才能覆盖剩下的广告牌。
输入
输入共两行。
第一行四个整数,l1,r1,l2,r1,描述广告牌左下和右上两个坐标(l1,r1)和(l2,r2)。
第二行四个整数,x1,y1,x2,y2,描述覆盖的位置的左下和右上两个坐标(x1,y1)和(x2,y2)。
所有数值都在-1000~1000范围内。
输出
一行一个整数,表示需要的最小的矩形的布。
样例输入
2 1 7 4
5 -1 10 3
样例输出
15
思路
第一眼给我们的印象:模拟、枚举。
可是单单这样没头没脑没方向没想法没目标想的话,是不是有点复杂?
所以思考一下,淡定一点,我们可以看出:
只有在四周长条状覆盖才有用。
比如下图:

其他覆盖例如在中间一小块,四角都没有任何卵用作用……咳咳。
而除了这样覆盖,就只有剩下两种情况:原来的面积或者0
思路来了。那就是代码实现的问题了。
代码实现

没错还是这幅图。枚举了四种中的一种情况——上。
那么我们可以看出符合上的条件是:x1 > l1 && y1 <= r1 && x2 >= l2 && y2 >= r2 && x1 < l2。
x1 > l1 && x1 < l2:这一条线决定了覆盖的范围,但不能与原本正方形的两条边重合(重合即为0)
x2 >= l2 && y2 >= r2 && y1 <= r1:若不满足则覆盖面积必定为四角类型(左上,左下,右上,右下),但几条线可以重合,并不影响考虑的情况。
其他的3种情况就以此类推。
主要是草稿纸上画图,再分别标出8个数字在图上对应的位置,推理一下就可以知道这个长条区域所需要的条件。
最终贴上代码:
#include<cstdio>
using namespace std;
int l1, r1, l2, r2;
int x1, y1, x2, y2;
int sum, a, b, c, d;
int abs(int x)
{
if(x < 0)
return -x;
return x;
}
int main() {
scanf("%d%d%d%d%d%d%d%d", &l1, &r1, &l2, &r2, &x1, &y1, &x2, &y2);
if(x1 <= l1 && y1 <= r1 && x2 >= l2 && y2 >= r2)
printf("%d",0);//0
else if(x1 > l1 && y1 <= r1 && x2 >= l2 && y2 >= r2 && x1 < l2)
printf("%d",abs(r2 - r1) * abs(x1 - l1));//up
else if(y2 < r2 && r2 > r1 && x2 >= l2 && x1 <= l1 && y1 <= r1)
printf("%d",abs(l2 - l1) * abs(r2 - y2));//left
else if(x2 > l1 && x2 < l2 && y2 >= r2 && x1 <= l1 && y1 <= r1)
printf("%d",abs(r2 - r1) * abs(l2 - x2));//down
else if(y1 < r2 && y1 > r1 && x1 <= l1 && x2 >= l2 && y2 >= r2)
printf("%d",abs(l2 - l1) * abs(y1 - r1));//right
else
printf("%d",abs(l2 - l1) * abs(r2 - r1));//all
}
备注:调用cmath库不能使用“y1”变量╮(╯▽╰)╭,但是我又怕粗心导致里面有负数,如果确定的情况下可不用abs。
题目倒是挺水,就是不知道你有没有耐心
Blocked Billboard II的更多相关文章
- Blocked Billboard II题解--模拟到崩溃的模拟
前言 比赛真的状态不好(腐了一小会),导致差点爆0. 这个题解真的是在非常非常专注下写出来的,要不然真的心态崩. 题目 题目描述 奶牛Bassie想要覆盖一大块广告牌,她在之前已经覆盖了一小部分广告牌 ...
- bash_profile打不开怎么办,用nano .bash_profile打开
I’ve spent years curating a collection of Mac bash aliases and shortcuts to make my life easier. My ...
- 洛谷 P2084 进制转换
P4122 [USACO17DEC]Blocked Billboard 题目描述 During long milking sessions, Bessie the cow likes to stare ...
- cesium billboard跨域问题1
群里小伙伴问道使用billboard加载图片时出现跨域问题,一般认为在服务器端设置 Access-Control-Allow-Origin: * 例如用tomcat发布图片服务,可以这样设置:http ...
- Leetcode 笔记 113 - Path Sum II
题目链接:Path Sum II | LeetCode OJ Given a binary tree and a sum, find all root-to-leaf paths where each ...
- Leetcode 笔记 117 - Populating Next Right Pointers in Each Node II
题目链接:Populating Next Right Pointers in Each Node II | LeetCode OJ Follow up for problem "Popula ...
- 函数式Android编程(II):Kotlin语言的集合操作
原文标题:Functional Android (II): Collection operations in Kotlin 原文链接:http://antonioleiva.com/collectio ...
- iOS App 不支持http协议 App Transport Security has blocked a cleartext HTTP (http://)
目前iOS已经不支持http协议了,不过可以通过info.plist设置允许 App Transport Security has blocked a cleartext HTTP (http://) ...
- 统计分析中Type I Error与Type II Error的区别
统计分析中Type I Error与Type II Error的区别 在统计分析中,经常提到Type I Error和Type II Error.他们的基本概念是什么?有什么区别? 下面的表格显示 b ...
随机推荐
- Date工具类中CompareTo()
A<B 结果是-1 A>B 结果是1 A==B 结果是0
- 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(4.12-加-6.2-加-7.2.5.2)Fused_Operations
4.12 Fused Operations 融合操作 融合操作通过“fusing”把两个简单的命令融合一起来支持一个更复杂的命令.协议规定这个特性是可选的:如果支持此特性,需要在Figure 247 ...
- Jenkins +Ant +Jmeter(apache-jmeter-5.1.1)自动化性能测试平台
1.安装配置好Jdk, 下载网址:https://www.cr173.com/soft/33894.html 2.Jmeter下载地址:http://jmeter.apache.org/downloa ...
- Dubbo快速入门
Dubbo作为一个RPC框架,其最核心的功能就是要实现跨网络的远程调用.这次创建两个应用,一个作为服务的提供方,一个作为服务的消费方.通过Dubbo来实现服务消费方远程调用服务提供方的方法. 服务提供 ...
- 理解 Oracle 多租户体系中(12c,18c,19c)创建角色作用域范围
本篇探讨以下几个问题:你可提前猜测下面6个场景语句中,哪几个可以成功创建角色? 1. 在CDB级别中创建公共角色,不带 container 子句的效果: 2. 在CDB级别中创建公共角色,带 cont ...
- easy_thinking
登陆抓包,改成32位,根据tp6任意创建文件的漏洞,修改cookie. 上传文件. 木马在/runtime/session下, 然后传bypass文件绕过disablefunction,得到flag
- 使用wsgiref手撸web框架
模板 前言 要说到应用程序,就不得不提的就是cs架构和BS架构 所谓的cs架构就是client端和server端,就像我们的电脑上的qq,微信等应用程序 bs架构就是浏览器端和server端,我们不需 ...
- 出现“无法在发送 HTTP 标头之后进行重定向”问题
如题,在Response.Redirect之后会偶尔出现“无法在发送HTTP标头之后进行重定向”问题. 是因为,已经在出现错误的代码之前进行过一次重定向了.仔细检查代码即可. 解决方法:按照逻辑移除多 ...
- html中特殊符号对应表
html中特殊符号的对应表 符号 说明 编码 ‘' 双引号 " & and符 & < 小于号 < > 大于号 > 空格 ...
- window使用pycharm远程连接服务器
1.进入pycharm, File->Settings->Deployment下: 1.新加一个Server,type为SFTP,name自定义一个,例如UI自动化项目: 2.在SFTP ...