题干:

度度熊喜欢着喵哈哈村的大明星——星星小姐。

为什么度度熊会喜欢星星小姐呢?

首先星星小姐笑起来非常动人,其次星星小姐唱歌也非常好听。

但这都不是最重要的,最重要的是,星星小姐拍的一手好代码!

于是度度熊关注了星星小姐的贴吧。

一开始度度熊决定每天都在星星小姐的贴吧里面签到。

但是度度熊是一个非常健忘的孩子,总有那么几天,度度熊忘记签到,于是就断掉了他的连续签到。

不过度度熊并不是非常悲伤,因为他有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
2 1
1 1
3 3
1 2
1 1
Sample Output
3
3
  
Hint
样例一:度度熊补签第2天,然后第1天、第二天和第三天都进行了签到操作。
样例二:度度熊补签第2天和第3天。

解题报告:

注意几个细节,这里最好 让r=2,以免会上来就减掉一部分m。第二就是首先要对ans进行初始化,因为刚进入while循环的时候是不会进行更新ans的,,,这里相当于忽略了一个可能的答案。还有就是更新ans的时候,不需要记录m具体放在什么位置,因为你区间的选择都是符合条件的,剩下的m都添加在后面就可以了,当然添加在前面也是可以的,,但是这种情况应该在之前就已经更新过了。。。总之最终一定会得到最优解。

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define F first
#define S second
#define ll long long
#define pb push_back
#define pm make_pair
using namespace std;
typedef pair<int,int> PII;
const int MAX = 2e5 + 5;
struct R{int l,r;
} a[MAX],b[MAX];
bool cmp(R a,R b) {if(a.l!=b.l) return a.l<b.l;else return a.r>b.r;
}
int main()
{int n,m;while(~scanf("%d%d",&n,&m)) {for(int i = 1; i<=n; i++) scanf("%d%d",&a[i].l,&a[i].r);sort(a+1,a+n+1,cmp);int tot=1;b[1]=a[1];for(int i = 2; i<=n; i++) {if(a[i].l<=b[tot].r+1) b[tot].r = max(b[tot].r,a[i].r);else b[++tot] = a[i];}int l = 1,r = 2,ans = b[1].r-b[1].l+m+1;//注意初始化 否则需要 while(r<=tot) {
//          ans = max(ans,b[r-1].r-b[l].l+1+m);//加这一句 m -= b[r].l - b[r-1].r-1;while(m<0&&l<=r) {m+=b[l+1].l-b[l].r-1;l++;}ans = max(ans,b[r].r-b[l].l+1+m);r++;}if(m>0) ans = max(ans,b[tot].r-b[l].l+1+m);printf("%d\n",ans);}return 0 ;
}

【HDU - 6119】小小粉丝度度熊 (区间合并,尺取,思维)相关推荐

  1. 2017百度之星初赛:B-1006. 小小粉丝度度熊(贪心+尺取)

    小小粉丝度度熊  Accepts: 1075  Submissions: 5191  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 327 ...

  2. 百度之星小小粉丝度度熊

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

  3. hdu6119 小小粉丝度度熊【尺取法(滑动窗口)】

    这是2017百度之星初赛二的赛题. 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6119 代码思路: 排序后合并交叉区间 使用尺取法(滑动窗口法),每 ...

  4. 2017百度之星初赛(B)1006小小粉丝度度熊------hdu6119

    题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=6119 分析: 我们一看到这题呢,因为题目明确告诉我们有重叠,所以我们肯定要先排序预处理下啦,然后呢, ...

  5. hdu 1540 Tunnel Warfare(线段树区间合并)

    hdu 1540 Tunnel Warfare 记录每个节点的最大左连续值.最大右连续值.最大连续值,向上更新的是常规的区间合并处理方式 关键是想到如何去查询,如果查询节点落在左儿子节点的右连续段中, ...

  6. HDU - 3397 Sequence operation(线段树+区间合并)

    题目链接:点击查看 题目大意:给定一个初始的数列,然后依次进行m次操作: 0 a b:将闭区间[a,b]内的点都变为0 1 a b:将闭区间[a,b]内的点都变为1 2 a b:将闭区间[a,b]内的 ...

  7. HDU - 2871 Memory Control(线段树+区间合并)好题!

    题目链接:点击查看 题目大意:给定n个内存和m个操作,分别是: New x:从内存编号1开始向右查找,分配一个长度为x的空间,若找到输出区间的首地址,否则输出Reject New: Free x:释放 ...

  8. HDU - 1540 Tunnel Warfare(线段树+区间合并)

    题目链接:点击查看 题目大意:给定n个村庄,初始化全部连接为一条直线,需要依次执行m个操作,D表示摧毁第i个村庄的连接,R表示恢复最后一 个被摧毁的村庄的连接,Q表示询问包括本身在内,与第i个村庄相连 ...

  9. bzoj 4653: [Noi2016]区间(尺取+线段树)

    4653: [Noi2016]区间 Time Limit: 60 Sec  Memory Limit: 256 MB Submit: 934  Solved: 500 [Submit][Status] ...

最新文章

  1. python 简易 http server
  2. python电脑配置苹果笔记本-tensorflow学习笔记1——mac开发环境配置
  3. python基础-字符串
  4. linux npm安装_怎样在Linux上开发vue项目
  5. agv调度matlab程序,AGV调度方法入门
  6. best,best,best ......何恺明开挂之路
  7. python单用户登录_Django实现单用户登录的方法示例
  8. uniapp 封装网络请求
  9. java webservice ip_通过Web Service实现IP地址查询功能的示例
  10. C++:fseek( FILE *stream, long offset, int origin )
  11. Vue3核心概念、新特性及与Vue2的区别
  12. 美国插画家Mike Bear作品欣赏
  13. 【JZOJ3824】【NOIP2014模拟9.9】渴
  14. Nginx源码分析 - 主流程篇 - 模块的初始化(12)
  15. 比较偏门的JVM语言Quercus - PHP on JVM
  16. python 异步定时任务
  17. 数据结构--括号匹配检验(数据结构习题)
  18. 分别统计其中数字、英文字母和其它字符的个数
  19. 循环单链表及C语言实现
  20. video.js视频高度自适应解决方法

热门文章

  1. ubuntu eclipse java,Ubuntu快速安装eclipse
  2. 3结构介绍_豹驰(BOACH)声学材料吸隔声方法介绍—(下)材料隔声特性曲线
  3. python可以测试java的代码吗_使用python做你自己的自动化测试--对Java代码做单元测试 (2)-导入第三方jar包裹...
  4. linux 固定ip_linux固定IP
  5. 三个用户在同一系统中同时对他们的c语言,杭州电子科技大学学生考试卷2013年操作系统试卷(2份,有答案)...
  6. 嵌入式Linux操作系统的版本查询
  7. Socket的send函数在执行时报EAGAIN的错误
  8. C语言关键字----Const
  9. 计算机分数的简便运算,分数的简便运算和分数的解方程
  10. 一般通话记录能保存多少条_鸡蛋放冰箱,能保存多少天?正确保存方法是什么?...