Blocked Billboard II题解--模拟到崩溃的模拟
前言
比赛真的状态不好(腐了一小会),导致差点爆0。
这个题解真的是在非常非常专注下写出来的,要不然真的心态崩。
题目
题目描述
奶牛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. 这个题解真的是在非常非常专注下写出来的,要不然真的心态崩. 刚换了域名,发现了美化脚本的bug,有点担心(汗-_-||). 题目 题目描述 奶 ...
- Leetcode 137. 只出现一次的数字 II - 题解
Leetcode 137. 只出现一次的数字 II - 题解 137. Single Number II 在线提交: https://leetcode.com/problems/single-numb ...
- 洛谷P3412 仓鼠找$Sugar\ II$题解(期望+统计论?)
洛谷P3412 仓鼠找\(Sugar\ II\)题解(期望+统计论?) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1327573 原题链接:洛谷P3412 ...
- [CSP-S模拟测试]:跳房子(模拟)
题目描述 跳房子,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一.跳房子是在$N$个格子上进行的,$CYJ$对游戏进行了改进,该成了跳棋盘,改进后的游戏是在一个$N$行$M$列的棋盘上进行,并 ...
- [CSP-S模拟测试]:线性代数(模拟)
题目传送门(内部题113) 输入格式 第一行一个正整数$n$. 接下来$n$行,每行$n$个整数,描述$C$矩阵.保证输入的是一个林先森矩阵. 输出格式 若不可能实现,则输出一行$Impossible ...
- 模拟namenode崩溃,使用secondarynamenode恢复
方法一.使用namespaceID 1.在namenode节点上,将dfs.name.dir指定的目录中(这里是name目录)的内容情况,以此来模拟故障发生. [hadoop@node1 name]$ ...
- 洛谷10月月赛II题解
[咻咻咻] (https://www.luogu.org/contestnew/show/11616) 令人窒息的洛谷月赛,即将参加NOIp的我竟然只会一道题(也可以说一道也不会),最终145的我只能 ...
- PAT甲题题解-1081. Rational Sum (20)-模拟分数计算
模拟计算一些分数的和,结果以带分数的形式输出注意一些细节即可 #include <iostream> #include <cstdio> #include <algori ...
- PAT甲题题解-1088. Rational Arithmetic (20)-模拟分数计算
输入为两个分数,让你计算+,-,*,\四种结果,并且输出对应的式子,分数要按带分数的格式k a/b输出如果为负数,则带分数两边要有括号如果除数为0,则式子中的结果输出Inf模拟题最好自己动手实现,考验 ...
随机推荐
- selenium+chromdriver 动态网页的爬虫
# 获取加载更多的数据有 2 种方法# 第一种就是直接找数据接口, 点击'加载更多' 在Network看下, 直接找到数据接口 # 第二种方法就是使用selenium+chromdriver # se ...
- 深入理解计算机系统 (CS:APP) - 高速缓存实验 Cache Lab 解析
原文地址:https://billc.io/2019/05/csapp-cachelab/ 这个实验是这学期的第四个实验.作为缓存这一章的配套实验,设计得非常精妙.难度上来讲,相比之前的修改现成文件, ...
- 037.集群网络-Docker网络实现
一 Docker网络 1.1 Docker网络类型 标准的Docker支持以下4类网络模式: host模式:使用--net=host指定. container模式:使用--net=container: ...
- 小白学 Python 数据分析(21):pyecharts 好玩的图表(系列终篇)
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...
- FormData/Go分片/分块文件上传
FormData 接口提供了一种表示表单数据的键值对的构造方式,经过它的数据可以使用 XMLHttpRequest.send() 方法送出,本接口和此方法都相当简单直接.如果送出时的编码类型被设为 & ...
- springMVC容器简介和执行流程
先来看一下,初始化的大体流程: 然后,我们再来看一下,我们的控制器DispatcherServlet的类图及继承关系. 系统启动的时候根据配置文件创建spring的容器, 首先是发送http请求到 ...
- C 2013笔试题
1.把整数分解成素数 如90=2*3*3*5 [见2015年] 方法一: int main() { int n, i=2; printf("\nInput:"); scanf(&q ...
- [dp]牛牛与数组
时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 牛牛喜欢这样的数组: 1:长度为n 2:每一个 ...
- 基础组合问题 ————从n个物品里选m个
package test; import java.util.*; public class Main{ public static int f(int n,int k, int goal){ if( ...
- tcp/ip面试题
TCP协议 1.OSI与TCP/IP各层的结构和功能,协议和作用. OSI七层模型对应TCP/IP四层模型,只是分法不同而已. 应用层:提供应用层服务,文件传输(FTP),电子邮件( ...