洛谷P1496 火烧赤壁
链接
https://www.luogu.org/problemnew/show/P1496
大意
给定数轴上nnn个线段,求总线段长度(重合的部分只能算1次)
数据范围
n<=20000" role="presentation" style="position: relative;">n<=20000n<=20000n
思路
看到这题的数据范围,暴模肯定超时,所以用了离散来优化时间复杂度,
按照线段的左边界排序,并在映射数轴上。
设LLL为总长度,a,b" role="presentation" style="position: relative;">a,ba,ba,b分别为找到线段的左右边界。
1.若线段iii的右边界不大于b" role="presentation" style="position: relative;">bbb,则看它的左边界若小于BBB则不作处理,否则将b" role="presentation" style="position: relative;">bbb赋值给aaa,右边界赋值给b" role="presentation" style="position: relative;">bbb,再计算一遍长度加到LLL中
2.若线段i" role="presentation" style="position: relative;">iii的右边界大于bbb,则将a,b" role="presentation" style="position: relative;">a,ba,ba,b分别改成线段ii<script type="math/tex" id="MathJax-Element-773">i</script>的左右边界,再计算一遍距离。
代码
#include<cstdio>
#include<algorithm>
#define r(i,a,b) for(int i=a;i<=b;i++)
using namespace std;int n,L,a,b;
struct node
{int l,r;
}k[20001];//结构体
bool cmp(node x,node y){return x.l<y.l;}//按左边界排序
int main()
{scanf("%d",&n);r(i,1,n){scanf("%d%d",&k[i].l,&k[i].r);//输入}sort(k+1,k+1+n,cmp);a=k[1].l;b=k[1].r;L+=b-a;//排序+初始化r(i,1,n)if(k[i].l<=b){if(k[i].r<b) continue;//完全不包含a=b;b=k[i].r;//更改L+=b-a;//计算}else{a=k[i].l;b=k[i].r;//赋值L+=b-a;//计算}printf("%d",L);//输出
}
洛谷P1496 火烧赤壁相关推荐
- (离散化)洛谷P1496火烧赤壁
洛谷P1496火烧赤壁 前言:首先这道题,可以用模拟过,模拟方法需要一些技巧,但是本文讲的是离散化方法,就忽略模拟法了. 算法分析1:首先,如果忽略本题的船的位置范围(本题船位置范围达到了10^9而且 ...
- 洛谷 P1496 火烧赤壁 题解 —— 离散化
火烧赤壁 - 洛谷 一道离散化的基础题,对蒟蒻来说是很值得一试的 题目翻译 题目花里胡哨,但问题就是在数轴上给出n个区间,统计这n个区间一共覆盖了多少个数 题目解析 本题有很多方法,这里只介绍用离散化 ...
- 洛谷P1496火烧赤壁
P1496火烧赤壁 题目: 曹操平定北方以后,公元 208 年,率领大军南下,进攻刘表.他的人马还没有到荆州,刘表已经病死.他的儿子刘琮听到曹军声势浩大,吓破了胆,先派人求降了. 孙权任命周瑜为都督, ...
- 洛谷 P1496 火烧赤壁(离散化
P1496 火烧赤壁 世界上只有一种英雄主义,就是认清了生活的本质后依然爱他. ----罗曼罗兰 通往成功的道路上有很多挫折,这正是成功的意义所在. ----yxr 记今天下午上机退化成海淀区小学二年 ...
- 洛谷 P1496 火烧赤壁
火烧赤壁 题目背景 曹操平定北方以后,公元 208 年,率领大军南下,进攻刘表.他的人马还没有到荆州,刘表已经病死.他的儿子刘琮听到曹军声势浩大,吓破了胆,先派人求降了. 孙权任命周瑜为都督,拨给他三 ...
- 洛谷-题解 P2672 【推销员】
独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...
- 洛谷 P1142 轰炸
洛谷 P1142 轰炸 题目描述 "我该怎么办?"飞行员klux向你求助. 事实上,klux面对的是一个很简单的问题,但是他实在太菜了. klux要想轰炸某个区域内的一些地方,它们 ...
- 洛谷 P1387 最大正方形
P1387 最大正方形 题目描述 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长. 输入输出格式 输入格式: 输入文件第一行为两个整数n,m(1<=n,m<=10 ...
- 洛谷P2763 试题库问题
题目:https://www.luogu.org/problemnew/show/P2763 题目描述 «问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性. ...
最新文章
- HDU 3374 String Problem (KMP+最大最小表示)
- 《机器学习实践应用》书中源代码
- Difference between expressions and statements?
- android 加壳 方案,android加壳思路
- yield的用法详解
- PYTHON之路DAY3
- 2020年电赛题目,命题专家权威解析!
- python画有权重网络图_使用Python的networkx绘制精美网络图教程
- paramiko远程密码连接、批量连接主机
- Windows7下安装redmine-3.4.6
- Django2.1文档
- QT图形显示和处理6
- 快速掌握Photoshop简单用法
- 微信公众号开发(一) 微信网页授权登录
- ONF发布安全部署SDN控制器指南
- ISTQB TM考点总结
- linux网络协议栈(四)链路层 vlan处理
- html5/css实现字体上划线
- linux内核编译时bad register name `%dil'错误
- excel中使用Vlookup和数据透视表
热门文章
- 《惢客创业日记》2021.04.13 -23(周二)惢客月老演示词
- 微信停止为苹果服务器,苹果用户注意!iOS成微信封号重灾区 赶快停止使用你的双客户端...
- 【无标题】利用C#连接阿里云RSD数据库mysql服务器
- 有一个数列,其前三项分别为1、2、3,从第四项开始,每项均为其相邻的前三项之和的1/2,问:该数列从第几项开始,其数值超过1200。
- Java:关于跳出两层循环的方法以及Label(标签)
- multisim信号采集及回放、文氏电桥正弦波
- python编程练习-正常血压
- 企业微信自建应用通过PHP进行收发消息
- saas云排产aps平台的整体方案设计
- 通信系统与网络思维导图