洛谷P1496 火烧赤壁 (模拟/离散化+差分)
分析可知:将起点和终点按照从小到大的顺序排序,对答案不会产生影响
所以此时我们得到一种模拟做法:
1 #include<bits/stdc++.h>
2 using namespace std;
3 const int N=2e4+10;
4 int n,a[N],b[N],ans;
5 //模拟做法
6 int main(){
7 scanf("%d",&n);
8 for(int i=1;i<=n;i++)
9 scanf("%d%d",&a[i],&b[i]);
10 sort(a+1,a+n+1);sort(b+1,b+n+1);
11 for(int i=1;i<=n;i++){
12 ans+=b[i]-a[i];
13 if(i!=n)//不是最后一条线段
14 if(b[i]>a[i+1]) ans-=b[i]-a[i+1];//减去重复的
15 }
16 cout<<ans;
17 }
注意可能会有重复的,要减去。
当然,我们还可以离散化(虽然说没有必要):
1 #include<bits/stdc++.h>
2 using namespace std;
3 const int N=2e4+10;
4 int n,ans,temp,cnt,a[N],b[N],x[2*N];
5 int f[2*N];//判断是否有效
6 //离散化
7 int main(){
8 scanf("%d",&n);
9 for(int i=1;i<=n;i++){
10 scanf("%d%d",&a[i],&b[i]);
11 x[++cnt]=a[i];x[++cnt]=b[i];
12 }
13 sort(x+1,x+cnt+1);
14 cnt=unique(x+1,x+cnt+1)-x-1;
15 for(int i=1;i<=n;i++){
16 a[i]=lower_bound(x+1,x+cnt+1,a[i])-x;
17 b[i]=lower_bound(x+1,x+cnt+1,b[i])-x;
18 f[a[i]]++;f[b[i]]--;//差分小优化
19 }
20 for(int i=1;i<=cnt;i++){
21 temp+=f[i];
22 if(temp) ans+=x[i+1]-x[i];//累加答案
23 }
24 cout<<ans;
25 }
什么是有效?比如:
有两对线段(x1,y1)(x2,y2) 如果x1>y2或x2>y1,那么(y2,x1)段或(y1,x2)段无用
因为排序后对答案没有影响,所以这种方法是正确的。
洛谷P1496 火烧赤壁 (模拟/离散化+差分)的更多相关文章
- 洛谷 P1496 火烧赤壁
题目描述 曹操平定北方以后,公元208年,率领大军南下,进攻刘表.他的人马还没有到荆州,刘表已经病死.他的儿子刘琮听到曹军声势浩大,吓破了胆,先派人求降了. 孙权任命周瑜为都督,拨给他三万水军,叫他同 ...
- [洛谷P3948]数据结构 题解(差分)
[洛谷P3948]数据结构 Description 最开始的数组每个元素都是0 给出n,opt ,min,max,mod 在int范围内 A: L ,R ,X 表示把[l,R] 这个区间加上X(数组的 ...
- 洛谷P3275 [SCOI2011]糖果(差分约束,最长路,Tarjan,拓扑排序)
洛谷题目传送门 差分约束模板题,等于双向连0边,小于等于单向连0边,小于单向连1边,我太蒻了,总喜欢正边权跑最长路...... 看遍了讨论版,我是真的不敢再入复杂度有点超级伪的SPFA的坑了 为了保证 ...
- 洛谷 P5046 [Ynoi2019 模拟赛] Yuno loves sqrt technology I(分块+卡常)
洛谷题面传送门 zszz,lxl 出的 DS 都是卡常题( 首先由于此题强制在线,因此考虑分块,我们那么待查询区间 \([l,r]\) 可以很自然地被分为三个部分: 左散块 中间的整块 右散块 那么这 ...
- 洛谷P3406 海底高铁[差分 贪心]
题目背景 大东亚海底隧道连接着厦门.新北.博艾.那霸.鹿儿岛等城市,横穿东海,耗资1000亿博艾元,历时15年,于公元2058年建成.凭借该隧道,从厦门可以乘坐火车直达台湾.博艾和日本,全程只需要4个 ...
- AC日记——导弹拦截 洛谷 P1020 (dp+模拟)
题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹 ...
- AC日记——潜伏者 洛谷 P1071 (模拟)
题目描述 R 国和 S 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动.历尽艰险后,潜伏于 S 国的 R 国间谍小 C 终于摸清了 S 国军用密码的编码规则: 1. S 国军方内部欲发送的原 ...
- 洛谷P3246 [HNOI2016]序列(离线 差分 树状数组)
题意 题目链接 Sol 好像搞出了一个和题解不一样的做法(然而我考场上没写出来还是爆零0) 一个很显然的思路是考虑每个最小值的贡献. 预处理出每个数左边第一个比他小的数,右边第一个比他大的数. 那么\ ...
- 【洛谷】【lca+树上差分】P3258 [JLOI2014]松鼠的新家
[题目描述:] 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n(2 ≤ n ≤ 300000)个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的.天哪,他居然真 ...
随机推荐
- display: table-cell里面文字打点的方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- linux 编译式安装apache
apache的安装需要两个组件,APR对于Tomcat最大的作用就是socket调度 组件下载解压完成 ,讲两个组件解压包移动到apache的类库文件夹内 注:如果系统自带了apr和apr-util可 ...
- ERROR: null value in column "name" of relation "res_company" violates not-null constraint
1 # 创建res.company公司信息的时候,发现它执行了两次create()方法,并且第二次调用create,传了一个[{}]做为参数 2 # 原因是,你创建res.company的时候并没有指 ...
- Odoo14 TypeError: Cannot read property 'classList' of undefined
Traceback: TypeError: Cannot read property 'classList' of undefined at Class.setLocalState (http://l ...
- 论文翻译:2022_Time-Frequency Attention for Monaural Speech Enhancement
论文地址:单耳语音增强的时频注意 引用格式:Zhang Q, Song Q, Ni Z, et al. Time-Frequency Attention for Monaural Speech Enh ...
- 万答#5,binlog解析出来的日志为何无法恢复
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 问题描述 问题来自一位群友,简单说就是用 mysqlbinlog 工具读取 bi ...
- 技术分析 | 浅谈在MySQL体系下SQL语句是如何在系统中执行的及可能遇到的问题
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 SQL语句大家并不陌生,但某种程度上来看,我们只是知道了这条语句是什么功能,它可 ...
- 使用.NET简单实现一个Redis的高性能克隆版(七-完结)
译者注 该原文是Ayende Rahien大佬业余自己在使用C# 和 .NET构建一个简单.高性能兼容Redis协议的数据库的经历. 首先这个"Redis"是非常简单的实现,但是他 ...
- openstack 创建虚拟机失败
虚拟机创建失败 用户创建一台虚拟机,虚拟机使用4个网络平面,所以虚拟机选择了4个不同平面的网络,创建虚拟机一直在孵化的过程中,最后创建虚拟机失败. 失败后返回的报错日志 Build of ins ...
- ceph 010 clustermap ceph调优
cluster map [ceph: root@clienta /]# ceph mon dump epoch 4 fsid 2ae6d05a-229a-11ec-925e-52540000fa0c ...