小小粉丝度度熊

 Accepts: 1075
 Submissions: 5191
 Time Limit: 2000/1000 MS (Java/Others)
 Memory Limit: 32768/32768 K (Java/Others)

Problem Description

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

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

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

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

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

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

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

不过度度熊并不是非常悲伤,因为他有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

①将所有时间段按L排序,如果L相同,按R排序(从小到大)

②遍历并合并时间段,例如[1, 5], [6,12], [8,13], [15,23]可合并为[1,13], [15, 23]

③肯定是补签连续的空档,用尺取就轻松搞定了

④注意L, R可以等于0,后面改题了

#include<stdio.h>
#include<algorithm>
using namespace std;
#define LL long long
typedef struct Res
{LL x;LL y;bool operator < (const Res &b) const{if(x<b.x || x==b.x && y<b.y)return 1;return 0;}
}Res;
Res s[100005];
int main(void)
{LL n, m, i, ans, cnt, last, sum, p, q;while(scanf("%I64d%I64d", &n, &m)!=EOF){cnt = 0;for(i=1;i<=n;i++)scanf("%I64d%I64d", &s[i].x, &s[i].y);sort(s+1, s+n+1);last = 0;for(i=1;i<=n;i++){if(i==1 || s[i].x>last+1){s[cnt].y = last;s[++cnt].x = s[i].x;last = s[i].y;}elselast = max(s[i].y, last);}s[cnt].y = last;s[cnt+1].x = s[cnt].y+m+2;ans = m;sum = 0;p = q = 1;while(q<=cnt){while(sum+s[q+1].x-s[q].y-1<=m && q<=cnt)sum += s[q+1].x-s[q].y-1, q++;ans = max(ans, s[q].y-s[p].x+1+m-sum);while(sum+s[q+1].x-s[q].y-1>m && q<=cnt && p<q)sum -= s[p+1].x-s[p].y-1, p++;if(sum+s[q+1].x-s[q].y-1>m && q<=cnt)p++, q++;}printf("%I64d\n", ans);}return 0;
}
/*
5 2
1 8
12 15
17 19
22 25
28 33
*/

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

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

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

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

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

  3. 2017百度之星程序设计大赛 - 资格赛:1003 度度熊与邪恶大魔王

    题目: Problem Description 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊一共拥有m种 ...

  4. 2015百度之星初赛(1)1006 旋转卡壳

    矩形面积 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  5. 2017百度之星初赛

    1001 小C的倍数问题 Accepts: 1990 Submissions: 4931 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32 ...

  6. 51nod 1515 明辨是非 2017百度之星初赛第一场第二题(并查集+启发式合并)

    题目: 原题链接 给n组操作,每组操作形式为x y p. 当p为1时,如果第x变量和第y个变量可以相等,则输出YES,并限制他们相等:否则输出NO,并忽略此次操作. 当p为0时,如果第x变量和第y个变 ...

  7. 2017百度之星初赛:A-1002. 数据分割(并查集+set)

    数据分割  Accepts: 102  Submissions: 1332  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 32768/3 ...

  8. 2017百度之星初赛B场总结

    (A场因为不可抗力因素(?)没能参加,B场还好算是磕磕碰碰地吃着低保过去了,真的菜呀) Chess Problem Description 車是中国象棋中的一种棋子,它能攻击同一行或同一列中没有其他棋 ...

  9. 2017百度之星初赛第一场题解

    前言 这场比赛我卡在线上了,没有进TAT 我只做了三道水题.. 首先是在比赛开始的时候我还在睡觉,我以为是2:30开始.. 然后,由于这个垃圾评测,卡死人了.. 于是我刷新一下,就算了我交了两次,于是 ...

最新文章

  1. js win10语音朗读文字
  2. spring boot的热加载(hotswap)
  3. 科学家利用BCI技术来缓解幻肢疼痛
  4. [HDF]hdf-4.2.6类库的使用
  5. kafka消费中的partition与消费者的关系
  6. python中横向制表符_Python-“缩进中的制表符和空格使用不一致”
  7. ubuntu下载百度网盘文件油猴+aria2
  8. Flex容器拖动(Bordercontainer为例)
  9. MySQL高级 - 案例 - 需求及环境准备
  10. Android之发送短信后按钮(60秒)变灰色每隔一秒递减显示
  11. Sequence Pair Weight
  12. CUDA C编程权威指南 第二章 CUDA编程模型
  13. Java Web学习视频
  14. 帆软报表使用心得(转)
  15. Jflash 工程配置及下载
  16. 移动端pc端兼容element-ui
  17. sqlserver 错误大全
  18. iOS 贝塞尔曲线初探
  19. STM32F091不识别仿真器的案例
  20. oracle 级联外键,Oracle 级联删除外键

热门文章

  1. 线上python课程一般多少钱-学习Python这门课程大概需要多久?费用是多少?
  2. python办公自动化案例-Python实战:自动化办公:Python 自动整理 Excel 表格
  3. 语音识别技术原理概述!
  4. 如何查找涉密文件_企业如何处理涉密信息文件?这四点必知
  5. 算法-满足条件的数字放在新数组
  6. vue + wangeditor封装富文本组件
  7. mysql 修复数据表 批量_MySQL数据库迁移与MySQL数据库批量恢复
  8. ffplay播放器移植VC的工程:ffplay for MFC
  9. mysql保存表出错1075_navicat出现错误1075怎么办
  10. java 综合练习_Java 之综合练习