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 ...
随机推荐
- java 日期累加,如何求一年后日期,一月后日期,一周后日期和一天后日期
import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import ja ...
- 爬虫爱用的一些python技巧
1.正则表达式 有时候提取到的数据不规整,需要用正则来匹配所需要展现出来的数据 学习链接:https://www.cnblogs.com/-chenxs/p/11352172.html,https:/ ...
- centos7搭建天兔
如果新系统尚未安装工具pip,可通过以下三步快速安装pip 1. yum -y install epel-release 2. yum -y ...
- [CF3B] Lorry - 贪心
有一辆载重量为 v 的货车, 准备运送两种物品. 物品 A 的重量为 1, 物体 B 的重量为 2, 每个物品都有一个价值. 求货车可以运送的物品的最大价值. Solution 考虑把物品分为两类,枚 ...
- execute、executeUpdate、executeQuery的区别
链接:https://blog.csdn.net/u012501054/article/details/80323176 链接:https://blog.csdn.net/CNAHYZ/article ...
- Selenium3+python自动化012+日志logging基本用法、高级用法
1.关键字: login 登录 log 日志 logging python日志模块 2.什么叫日志: 日志用来记录用户行为或者代码的执行过程 3.日志使用的地方: 1.排错的时候需要打印很多细节来帮助 ...
- SpringBoot整合WEB开发--(七)注册拦截器
1.创建一个拦截器类实现HandlerInterceptor接口,重写其中的3个方法,这拦截器中方法的执行顺序为:preHandle--Controller--postHandle--afterCom ...
- HTML页面学习
HTML 文档结构 <!DOCTYPE html> 文档声明 <html lang="en"> 语言 <head> 网站配置信息 <met ...
- hibernate跟Mybatis/ ibatis 的区别,为什么选择?(转)
第一章 Hibernate与MyBatisHibernate 是当前最流行的O/R mapping框架,它出身于sf.NET,现在已经成为Jboss的一部分. Mybatis 是另外一种优秀的O/R ...
- kao shi di er ti(还没有订正)
// 离散化点 思路应该是对的 吧 但没时间去检查编译上的错误 #include <bits/stdc++.h> using namespace std; ; #define ri reg ...