链接

https://www.luogu.org/problemnew/show/P1496

大意

给定数轴上nnn个线段,求总线段长度(重合的部分只能算1次)

数据范围

n&lt;=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 火烧赤壁相关推荐

  1. (离散化)洛谷P1496火烧赤壁

    洛谷P1496火烧赤壁 前言:首先这道题,可以用模拟过,模拟方法需要一些技巧,但是本文讲的是离散化方法,就忽略模拟法了. 算法分析1:首先,如果忽略本题的船的位置范围(本题船位置范围达到了10^9而且 ...

  2. 洛谷 P1496 火烧赤壁 题解 —— 离散化

    火烧赤壁 - 洛谷 一道离散化的基础题,对蒟蒻来说是很值得一试的 题目翻译 题目花里胡哨,但问题就是在数轴上给出n个区间,统计这n个区间一共覆盖了多少个数 题目解析 本题有很多方法,这里只介绍用离散化 ...

  3. 洛谷P1496火烧赤壁

    P1496火烧赤壁 题目: 曹操平定北方以后,公元 208 年,率领大军南下,进攻刘表.他的人马还没有到荆州,刘表已经病死.他的儿子刘琮听到曹军声势浩大,吓破了胆,先派人求降了. 孙权任命周瑜为都督, ...

  4. 洛谷 P1496 火烧赤壁(离散化

    P1496 火烧赤壁 世界上只有一种英雄主义,就是认清了生活的本质后依然爱他. ----罗曼罗兰 通往成功的道路上有很多挫折,这正是成功的意义所在. ----yxr 记今天下午上机退化成海淀区小学二年 ...

  5. 洛谷 P1496 火烧赤壁

    火烧赤壁 题目背景 曹操平定北方以后,公元 208 年,率领大军南下,进攻刘表.他的人马还没有到荆州,刘表已经病死.他的儿子刘琮听到曹军声势浩大,吓破了胆,先派人求降了. 孙权任命周瑜为都督,拨给他三 ...

  6. 洛谷-题解 P2672 【推销员】

    独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...

  7. 洛谷 P1142 轰炸

    洛谷 P1142 轰炸 题目描述 "我该怎么办?"飞行员klux向你求助. 事实上,klux面对的是一个很简单的问题,但是他实在太菜了. klux要想轰炸某个区域内的一些地方,它们 ...

  8. 洛谷 P1387 最大正方形

    P1387 最大正方形 题目描述 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长. 输入输出格式 输入格式: 输入文件第一行为两个整数n,m(1<=n,m<=10 ...

  9. 洛谷P2763 试题库问题

    题目:https://www.luogu.org/problemnew/show/P2763 题目描述 «问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性. ...

最新文章

  1. HDU 3374 String Problem (KMP+最大最小表示)
  2. 《机器学习实践应用》书中源代码
  3. Difference between expressions and statements?
  4. android 加壳 方案,android加壳思路
  5. yield的用法详解
  6. PYTHON之路DAY3
  7. 2020年电赛题目,命题专家权威解析!
  8. python画有权重网络图_使用Python的networkx绘制精美网络图教程
  9. paramiko远程密码连接、批量连接主机
  10. Windows7下安装redmine-3.4.6
  11. Django2.1文档
  12. QT图形显示和处理6
  13. 快速掌握Photoshop简单用法
  14. 微信公众号开发(一) 微信网页授权登录
  15. ONF发布安全部署SDN控制器指南
  16. ISTQB TM考点总结
  17. linux网络协议栈(四)链路层 vlan处理
  18. html5/css实现字体上划线
  19. linux内核编译时bad register name `%dil'错误
  20. excel中使用Vlookup和数据透视表

热门文章

  1. 《惢客创业日记》2021.04.13 -23(周二)惢客月老演示词
  2. 微信停止为苹果服务器,苹果用户注意!iOS成微信封号重灾区 赶快停止使用你的双客户端...
  3. 【无标题】利用C#连接阿里云RSD数据库mysql服务器
  4. 有一个数列,其前三项分别为1、2、3,从第四项开始,每项均为其相邻的前三项之和的1/2,问:该数列从第几项开始,其数值超过1200。
  5. Java:关于跳出两层循环的方法以及Label(标签)
  6. multisim信号采集及回放、文氏电桥正弦波
  7. python编程练习-正常血压
  8. 企业微信自建应用通过PHP进行收发消息
  9. saas云排产aps平台的整体方案设计
  10. 通信系统与网络思维导图