2017百度之星初赛:B-1006. 小小粉丝度度熊(贪心+尺取)
小小粉丝度度熊
度度熊喜欢着喵哈哈村的大明星——星星小姐。
为什么度度熊会喜欢星星小姐呢?
首先星星小姐笑起来非常动人,其次星星小姐唱歌也非常好听。
但这都不是最重要的,最重要的是,星星小姐拍的一手好代码!
于是度度熊关注了星星小姐的贴吧。
一开始度度熊决定每天都在星星小姐的贴吧里面签到。
但是度度熊是一个非常健忘的孩子,总有那么几天,度度熊忘记签到,于是就断掉了他的连续签到。
不过度度熊并不是非常悲伤,因为他有m张补签卡,每一张补签卡可以使得某一忘签到的天,变成签到的状态。
那么问题来了,在使用最多m张补签卡的情况下,度度熊最多连续签到多少天呢?
本题包含若干组测试数据。
第一行两个整数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
注意,区间可能存在交叉的情况。
输出度度熊最多连续签到多少天。
2 1 1 1 3 3 1 2 1 1
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. 小小粉丝度度熊(贪心+尺取)相关推荐
- 2017百度之星初赛(B)1006小小粉丝度度熊------hdu6119
题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=6119 分析: 我们一看到这题呢,因为题目明确告诉我们有重叠,所以我们肯定要先排序预处理下啦,然后呢, ...
- hdu6119 小小粉丝度度熊【尺取法(滑动窗口)】
这是2017百度之星初赛二的赛题. 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6119 代码思路: 排序后合并交叉区间 使用尺取法(滑动窗口法),每 ...
- 2017百度之星程序设计大赛 - 资格赛:1003 度度熊与邪恶大魔王
题目: Problem Description 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊一共拥有m种 ...
- 2015百度之星初赛(1)1006 旋转卡壳
矩形面积 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- 2017百度之星初赛
1001 小C的倍数问题 Accepts: 1990 Submissions: 4931 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32 ...
- 51nod 1515 明辨是非 2017百度之星初赛第一场第二题(并查集+启发式合并)
题目: 原题链接 给n组操作,每组操作形式为x y p. 当p为1时,如果第x变量和第y个变量可以相等,则输出YES,并限制他们相等:否则输出NO,并忽略此次操作. 当p为0时,如果第x变量和第y个变 ...
- 2017百度之星初赛:A-1002. 数据分割(并查集+set)
数据分割 Accepts: 102 Submissions: 1332 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/3 ...
- 2017百度之星初赛B场总结
(A场因为不可抗力因素(?)没能参加,B场还好算是磕磕碰碰地吃着低保过去了,真的菜呀) Chess Problem Description 車是中国象棋中的一种棋子,它能攻击同一行或同一列中没有其他棋 ...
- 2017百度之星初赛第一场题解
前言 这场比赛我卡在线上了,没有进TAT 我只做了三道水题.. 首先是在比赛开始的时候我还在睡觉,我以为是2:30开始.. 然后,由于这个垃圾评测,卡死人了.. 于是我刷新一下,就算了我交了两次,于是 ...
最新文章
- js win10语音朗读文字
- spring boot的热加载(hotswap)
- 科学家利用BCI技术来缓解幻肢疼痛
- [HDF]hdf-4.2.6类库的使用
- kafka消费中的partition与消费者的关系
- python中横向制表符_Python-“缩进中的制表符和空格使用不一致”
- ubuntu下载百度网盘文件油猴+aria2
- Flex容器拖动(Bordercontainer为例)
- MySQL高级 - 案例 - 需求及环境准备
- Android之发送短信后按钮(60秒)变灰色每隔一秒递减显示
- Sequence Pair Weight
- CUDA C编程权威指南 第二章 CUDA编程模型
- Java Web学习视频
- 帆软报表使用心得(转)
- Jflash 工程配置及下载
- 移动端pc端兼容element-ui
- sqlserver 错误大全
- iOS 贝塞尔曲线初探
- STM32F091不识别仿真器的案例
- oracle 级联外键,Oracle 级联删除外键
热门文章
- 线上python课程一般多少钱-学习Python这门课程大概需要多久?费用是多少?
- python办公自动化案例-Python实战:自动化办公:Python 自动整理 Excel 表格
- 语音识别技术原理概述!
- 如何查找涉密文件_企业如何处理涉密信息文件?这四点必知
- 算法-满足条件的数字放在新数组
- vue + wangeditor封装富文本组件
- mysql 修复数据表 批量_MySQL数据库迁移与MySQL数据库批量恢复
- ffplay播放器移植VC的工程:ffplay for MFC
- mysql保存表出错1075_navicat出现错误1075怎么办
- java 综合练习_Java 之综合练习