小小粉丝度度熊 HDU
来源:互联网 发布:fifa聚宝盆网络繁忙 编辑:程序博客网 时间:2024/04/28 15:47
度度熊喜欢着喵哈哈村的大明星——星星小姐。
为什么度度熊会喜欢星星小姐呢?
首先星星小姐笑起来非常动人,其次星星小姐唱歌也非常好听。
但这都不是最重要的,最重要的是,星星小姐拍的一手好代码!
于是度度熊关注了星星小姐的贴吧。
一开始度度熊决定每天都在星星小姐的贴吧里面签到。
但是度度熊是一个非常健忘的孩子,总有那么几天,度度熊忘记签到,于是就断掉了他的连续签到。
不过度度熊并不是非常悲伤,因为他有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天。
这题还是做出来了,不过就a了两题(01和06),手速不够啊,这题其实已经看出来是尺取了,时间花在了实现了,还有就是没看到是区间有交叉的,一直wa,比赛的时候浪费了太多时间,比较可惜,细节…
#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<cmath>#include<set>#include<vector>#define mod 1000000007using namespace std;struct node{ int l,r;}b[100005],b2[100005];int cmp(node x1,node x2){ return x1.l<x2.l;}int n,m;int sum[100005];int rest(int l,int r)//这个是当所有的区间都没有交集,当从小到大排好序,如果我们要么把第l个到r个都连起来,那么至少需要填补的缝隙的大小,然后与m去比较{ return b2[r].r-b2[l].l+1-(sum[r]-sum[l-1]);;}int main(){ int x,y; sum[0]=0; while(scanf("%d%d",&n,&m)==2) { for(int i=1;i<=n;i++) { scanf("%d%d",&x,&y); b[i].l=x; b[i].r=y; } sort(b+1,b+1+n,cmp); int k=0; int lef=b[1].l; int flag=b[1].r; for(int i=2;i<=n;i++)//这里去除交集区间,不断合并成一个大区间 { if(flag>=b[i].l) flag=max(flag,b[i].r); else { k++; b2[k].l=lef; b2[k].r=flag; //cout<<"haha"<<lef<<" "<<flag<<endl; lef=b[i].l; flag=b[i].r; } } k++; b2[k].l=lef; b2[k].r=flag; //cout<<"k"<<k<<endl; for(int i=1;i<=k;i++) sum[i]=sum[i-1]+b2[i].r-b2[i].l+1;//计算前缀和,也是为rest函数所需要 int left=1,right=1; int maxx=0; maxx=max(maxx,b2[1].r-b2[1].l+1+m); //cout<<"maxx"<<maxx<<endl; if(k==1) { printf("%d\n",maxx); continue; } while(right<=k)//核心代码 { while(rest(left,right)>m)//说明当前的m值不能使得left到right的区间他连起来 left++; maxx=max(maxx,b2[right].r-b2[left].l+1+m-rest(left,right)); right++; } printf("%d\n",maxx); } return 0;}
- 小小粉丝度度熊 HDU
- 小小粉丝度度熊 HDU
- hdu 6119 小小粉丝度度熊
- HDU 6119 小小粉丝度度熊
- [HDU 6119]小小粉丝度度熊
- hdu 6119 小小粉丝度度熊(尺取)
- HDU 6119 小小粉丝度度熊 双指针
- HDU 6119 小小粉丝度度熊 (尺取法)
- hdu 6119 小小粉丝度度熊(尺取法)
- 【尺取法】hdu 6119 小小粉丝度度熊
- 【HDU 6119 小小粉丝度度熊】 & 尺取
- 【尺取法】hdu 6119 小小粉丝度度熊
- HDU 6119 小小粉丝度度熊【尺取法】
- hdu 6119 小小粉丝度度熊 【想法题】
- 小小粉丝度度熊
- 小小粉丝度度熊
- HDU6119 小小粉丝度度熊
- 小小粉丝度度熊
- Docker三个基本概念镜像(Image)容器(Container)仓库(Repository)
- React 组件间通信-props的用法
- 笨办法学 Python · 续 练习 37:小型 BASIC
- iOS学习笔记之-定位
- tp5中多条件模糊查询
- 小小粉丝度度熊 HDU
- Linux常见Shell命令
- 我是如何做到H5和移动端原生交互的
- Android探索之旅(第二十六篇)Android如何运用Fidder进行对AndroidApp应用数据的抓取
- Java_面向对象03 方法重载
- Android启动页黑屏问题解决
- linux环境下安装jdk详细步骤以及删除jdk详细步骤
- C# 使用List泛型读取和保存文本文件
- git基本原理