hdu6119 小小粉丝度度熊
来源:互联网 发布:腾讯tgp客户端mac 编辑:程序博客网 时间:2024/04/28 01:28
题目传送门:
思路:首先题目中说区间可能有交叉,所以第一步我们先处理一下区间重叠的情况把重叠的区间合并一下
第二步我们只需要尺取一下找最大区间就可以了
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn=1e9+7;struct node{ int x; int y;}data[100005],data1[100005];int c[100005];bool cmp(const node a,const node b){ if(a.x==b.x) return a.y<b.y; return a.x<b.x;}int main(){ int n,m; while(cin>>n>>m) { for(int i=0;i<n;i++) scanf("%d%d",&data[i].x,&data[i].y); sort(data,data+n,cmp); int k=1; for(int i=0;i<n;i++) { if(i==0) data1[k].x=data[i].x,data1[k].y=data[i].y; else { if(data[i].x<=data1[k].y) data1[k].y=max(data1[k].y,data[i].y); else { k++; data1[k].x=data[i].x; data1[k].y=data[i].y; } } } c[0]=0; for(int i=1;i<=k;i++) c[i]=c[i-1]+(data1[i].y-data1[i].x+1); int j=1; int max1=0; for(int i=1;i<=k;i++) { while(j<=k&&(data1[j].y-data1[i].x+1)-(c[j]-c[i-1])<=m) { max1=max(max1,data1[j].y-data1[i].x+1); j++; } int d=m-((data1[j-1].y-data1[i].x+1)-(c[j-1]-c[i-1])); max1=max(max1,data1[j-1].y-data1[i].x+1+d); } cout<<max1<<endl; } return 0;}
ac代码:
阅读全文
0 0
- HDU6119 小小粉丝度度熊
- hdu6119 小小粉丝度度熊
- HDU6119-小小粉丝度度熊
- hdu6119小小粉丝度度熊(尺取法)
- HDU6119 小小粉丝度度熊(区间)
- hdu6119 小小粉丝度度熊【尺取】
- Hdu6119 小小粉丝度度熊(2017"百度之星"程序设计大赛
- hdu6119 小小粉丝度度熊【尺取法(滑动窗口)】
- 2017百度之星初赛(B)1006小小粉丝度度熊------hdu6119
- hdu6119 2017"百度之星"初赛(B)1006小小粉丝度度熊(贪心)
- 小小粉丝度度熊
- 小小粉丝度度熊
- 小小粉丝度度熊
- 小小粉丝度度熊 HDU
- 小小粉丝度度熊 HDU
- 小小粉丝度度熊
- 小小粉丝度度熊
- hdu 6119 小小粉丝度度熊
- 批处理bat,设置定时关机
- 分布式中的锁问题
- freeCodeCamp中一些算法练习的实现
- 插件化技术-Small插件框架
- ASP.NET MVC 5
- hdu6119 小小粉丝度度熊
- [SDUT](2140)图结构练习——判断给定图是否存在合法拓扑序列 ---拓扑排序(图)
- CentOS下yum的安装和配置
- 第六周 位运算
- 技术文章 | 2017年:35款最佳CSS工具
- 如何用一张图帮助你从程序员晋升为数据科学家
- 第二十九篇:JAVA网络编程之获取网络资源
- Android事件分发机制详解:史上最全面、最易懂
- Codeforces Round #428 (Div. 2) B. Game of the Rows(贪心,补题)