<题目链接>

度度熊决定每天都在星星小姐的贴吧里面签到。 
但是度度熊是一个非常健忘的孩子,总有那么几天,度度熊忘记签到,于是就断掉了他的连续签到。 
不过度度熊并不是非常悲伤,因为他有m张补签卡,每一张补签卡可以使得某一忘签到的天,变成签到的状态。 
那么问题来了,在使用最多m张补签卡的情况下,度度熊最多连续签到多少天呢? 


Input

本题包含若干组测试数据。 
第一行两个整数n,m,表示有n个区间,这n个区间内的天数,度度熊都签到了;m表示m张补签卡。 
接下来n行,每行两个整数(l[i],r[i]),表示度度熊从第l[i]天到第r[i]天,都进行了签到操作。

数据范围: 
$1<=n<=100000 $
$0<=m<=1000000000 $
$0<=l[i]<=r[i]<=1000000000 $

注意,区间可能存在交叉的情况。
Output

输出度度熊最多连续签到多少天。 
Sample Input

  1. 2 1
  2. 1 1
  3. 3 3
  4. 1 2
  5. 1 1

Sample Output

  1. 3
  2. 3

Hint

  1. 样例一:度度熊补签第2天,然后第1天、第二天和第三天都进行了签到操作。
  2. 样例二:度度熊补签第2天和第3天。
  3.  
  4. 解题分析:
    先对所有区间进行去重处理,之后,再用尺取法,设定双指针进行区间收缩,对于所有可行的区间,取区间长度的最大值。
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int maxn=1e5+;
  4.  
  5. struct Seg{
  6. int l,r;
  7. bool operator <(const Seg &tmp)const {
  8. return l==tmp.l?r<tmp.r:l<tmp.l;
  9. }
  10. }arr[maxn];
  11. Seg brr[maxn];
  12.  
  13. int main(){
  14. int n,m;
  15. while(~scanf("%d%d",&n,&m)){
  16. for(int i=;i<=n;i++)
  17. scanf("%d%d",&arr[i].l,&arr[i].r); //计算所有区间
  18. sort(arr+,arr++n);
  19. int cnt=;brr[]=arr[];
  20. for(int i=;i<=n;i++){ //进行区间去重操作
  21. if(arr[i].l<=brr[cnt].r)brr[cnt].r=max(arr[i].r,brr[cnt].r);
  22. else brr[++cnt]=arr[i];
  23. }
  24. int l=,r=,cur=;
  25. int ans=;
  26. for(r=;r<=cnt;r++){
  27. if(r>){
  28. cur+=brr[r].l-brr[r-].r-; //得到区间长度
  29. while(cur>m){ //如果补签的天数过多
  30. cur-=brr[l+].l-brr[l].r-; //就将左端点收缩
  31. l++;
  32. }
  33. }
  34. ans=max(ans,brr[r].r-brr[l].l++m-cur); //得到成立的最长区间
  35. }
  36. printf("%d\n",ans);
  37. }
  38. }
  1.  

2019-03-04

HDU 6119 小小粉丝度度熊 (区间去重)【尺取】的更多相关文章

  1. HDU 6119 小小粉丝度度熊 【预处理+尺取法】(2017"百度之星"程序设计大赛 - 初赛(B))

    小小粉丝度度熊 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  2. hdu 6119 小小粉丝度度熊

    小小粉丝度度熊 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  3. hdu 6119 小小粉丝度度熊(尺取)

    小小粉丝度度熊 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  4. HDU 6119 小小粉丝度度熊 双指针

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6119 题意:中文题面. 解法:先处理可能交叉的区间,然后容易发现满足双指针的特性. //HDU 611 ...

  5. HDU 6119 小小粉丝度度熊(Two pointers)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6119 [题目大意] 给出一些签到区间和一些补签卡,问可以创造的最长连续签到区间 [题解] 如果我们 ...

  6. 【二分+尺取】HDU 6119 小小粉丝度度熊

    http://acm.hdu.edu.cn/showproblem.php?pid=6119 [思路] 首先通过处理交叉的可以处理成不交叉的 然后二分查找答案 如何判断一个长度是否可行? 双指针O(n ...

  7. HDU 6119 2017百度之星初赛B 小小粉丝度度熊 (二分)

    小小粉丝度度熊 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  8. 2017"百度之星"程序设计大赛 - 初赛(B)小小粉丝度度熊

    Problem Description 度度熊喜欢着喵哈哈村的大明星——星星小姐. 为什么度度熊会喜欢星星小姐呢? 首先星星小姐笑起来非常动人,其次星星小姐唱歌也非常好听. 但这都不是最重要的,最重要 ...

  9. 小小粉丝度度熊 二分答案 + two pointer

    http://acm.hdu.edu.cn/showproblem.php?pid=6119 发现自己的two pointer能力超弱. 这题是合并时间后,二分答案. 可以知道对于每个时间区间,合法的 ...

随机推荐

  1. Windows&Word 常用快捷键

    Win:显示开始菜单 Win + E:打开文件管理器 Win + D:显示桌面 Win + L:锁定计算机 Win + I:打开设置 Win + M:最小化所有窗口 Alt + F4:1.用来关闭当前 ...

  2. Confluence 6 数据库字符集编码和问题

    数据库字符集编码 你的数据库和 JDBC 数据源连接必须配置为使用 UTF-8 编码(或者根据你配置的数据库来制定正确的 UTF-8 编码字符集,例如在 Oracle 中使用的是 AL32UTF8 ) ...

  3. 后RCNN时代的物体检测及实例分割进展

    https://mp.weixin.qq.com/s?__biz=MzA3MzI4MjgzMw==&mid=2650736740&idx=3&sn=cdce446703e69b ...

  4. python之vscode中手动选择python解释器(mac)

    要选择特定的解释器,请从命令选项板(⇧⌘P)调用Python:Select Interpreter命令. 更详细请看:http://www.cnblogs.com/it-tsz/p/9312151.h ...

  5. Android源码分析二 硬件抽象层(HAL)

    一 什么是HAL HAL 可定义一个标准接口以供硬件供应商实现,这可让 Android 忽略较低级别的驱动程序实现.借助 HAL,您可以顺利实现相关功能,而不会影响或更改更高级别的系统.HAL 实现会 ...

  6. Matplotlib模块:绘图和可视化

    一.简单介绍Matplotlib 1.Matplotlib是一个强大的Python绘图和数据可视化的工具包 2.安装方法:pip install matplotlib 3.引用方法:import ma ...

  7. 页面初始化的js函数要放在最最最最最最最前边!否则没效果

    简单说一下这个情况,html的页面的各部分都是动态渲染的,所以头部的某些个样式调用函数需要在页面初始化的时候被加载,这个我也是知道的,结果后边代码敲着敲着,就把这个事儿给忘了,然后启动项目的时候,页面 ...

  8. Centos6.10部署TeamViewer

    1.在官网下载支持Linux系统的包,建议下载TeamViewer12的包,官网URL:https://www.teamviewer.com/cn/download/linux/ 2.将下载的软件包导 ...

  9. python函数之各种器

    一: 装饰器 1:装饰器模板 def wrapper(func): def inner(*args,**kwargs): ret =func(*args,**kwargs) return ret re ...

  10. ActiveSync之HTTP

    Exchange ActiveSync:HTTP协议让客户端能够同步存储在服务器上的数据. 互联网工程工作小组(IETF)要求所有互联网协议都比支持UTF-8编码.因此,ActiveSync传输所使用 ...