http://acm.hdu.edu.cn/showproblem.php?pid=6119

【思路】

  • 首先通过处理交叉的可以处理成不交叉的
  • 然后二分查找答案
  • 如何判断一个长度是否可行?
  • 双指针O(n)扫一次就可以,要处理区间和问题,所以先求前缀和
  • 时间复杂度O(nlogn)

【AC】

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath> using namespace std;
typedef long long ll;
const int maxn=1e5+;
int n,m;
int cnt1,cnt2;
struct node
{
int l;
int r;
}a[maxn];
int b[maxn];
int c[maxn];
int pre1[maxn];
int pre2[maxn]; bool cmp(node x,node y)
{
if(x.l!=y.l) return x.l<y.l;
return x.r<y.r;
}
void Pre()
{
memset(pre1,,sizeof(pre1));
pre1[]=b[];
for(int i=;i<cnt1;i++)
{
pre1[i]=pre1[i-]+b[i];
}
memset(pre2,,sizeof(pre2));
pre2[]=c[];
for(int i=;i<cnt2;i++)
{
pre2[i]=pre2[i-]+c[i];
} }
bool check(int p,int q,int mid)
{
if(p==) return pre1[q]>=mid;
return pre1[q]-pre1[p-]>=mid;
}
bool judge(int mid)
{
int pos=upper_bound(pre2,pre2+cnt2,m)-pre2-;
int totm=pre2[pos];
int p=,q=pos+;
while(p<=q&&q<cnt1)
{
if(check(p,q,mid))
{
return true;
}
else
{
totm-=c[p];
p++;
while(pos+<cnt2&&totm+c[pos+]<=m)
{
totm+=c[pos+];
pos++;
}
q=pos+;
}
}
return false;
}
int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
for(int i=;i<n;i++)
{
scanf("%d%d",&a[i].l,&a[i].r);
}
sort(a,a+n,cmp);
cnt1=;
cnt2=;
int p=a[].l,q=a[].r;
int low=,high=;
for(int i=;i<n;i++)
{
if(a[i].l<=q)
{
q=max(q,a[i].r);
}
else
{
b[cnt1++]=q-p+;
high+=q-p+;
c[cnt2++]=a[i].l-q-;
p=a[i].l;
q=a[i].r;
}
}
b[cnt1++]=q-p+;
high+=q-p+;
Pre();
while(low<=high)
{
int mid=(low+high)>>;
if(judge(mid))
{
low=mid+;
}
else
{
high=mid-;
}
}
cout<<low+m-<<endl;
}
return ;
}

【二分+尺取】HDU 6119 小小粉丝度度熊的更多相关文章

  1. hdu 6119 小小粉丝度度熊(尺取)

    小小粉丝度度熊 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  2. HDU 6119 小小粉丝度度熊 【预处理+尺取法】(2017"百度之星"程序设计大赛 - 初赛(B))

    小小粉丝度度熊 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  3. hdu 6119 小小粉丝度度熊

    小小粉丝度度熊 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  4. HDU 6119 小小粉丝度度熊 (区间去重)【尺取】

    <题目链接> 度度熊决定每天都在星星小姐的贴吧里面签到. 但是度度熊是一个非常健忘的孩子,总有那么几天,度度熊忘记签到,于是就断掉了他的连续签到. 不过度度熊并不是非常悲伤,因为他有m张补 ...

  5. HDU 6119 小小粉丝度度熊 双指针

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6119 题意:中文题面. 解法:先处理可能交叉的区间,然后容易发现满足双指针的特性. //HDU 611 ...

  6. HDU 6119 小小粉丝度度熊(Two pointers)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6119 [题目大意] 给出一些签到区间和一些补签卡,问可以创造的最长连续签到区间 [题解] 如果我们 ...

  7. HDU 6119 2017百度之星初赛B 小小粉丝度度熊 (二分)

    小小粉丝度度熊 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  8. 2017"百度之星"程序设计大赛 - 初赛(B)小小粉丝度度熊

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

  9. Hdu-6119 小小粉丝度度熊 尺取

    题面 题意:在一大段时间里,告诉你,你签到了哪些区间,现在再给你m张补签卡,问你最多能实现连续签到多少天 题解:那些时间区间是有重叠的,所以我们先排序离散,并得到哪些区间是可以补签的,这样问题就变成, ...

随机推荐

  1. 动手实现 React-redux(五):Provider

    我们要把 context 相关的代码从所有业务组件中清除出去,现在的代码里面还有一个地方是被污染的.那就是 src/index.js 里面的 Index: ... class Index extend ...

  2. AJPFX谈Java 性能优化之基本类型 vs 引用类型

    ★名词定义 先明确一下什么是“基本类型”,什么是“引用类型”. 简单地说,所谓基本类型就是 Java 语言中如下的8种内置类型: booleancharbyteshortintlongfloatdou ...

  3. web前端怎么样才能入门

    web前端怎么样才能入门,首先我们要从什么是初级web前端工程师说起: 按照我的想法,我把前端工程师分为了入门.初级.中级.高级这四个级别: 入门级别指的是了解什么是前端(前端到底是什么其实很多人还是 ...

  4. vue安装概要以及vue测试工具

    一.概述 1.安装node,去node官网 2.新建一个项目,通过npm init命令初始化,即创建一个package.json文件 3.用命令 npm install vue -g 全局安装vue( ...

  5. BaseAtapter

    本文用于实现一个通用的BaseAdapter类,统一产品的Adapter类,作为一个工具类,减少重复性工作,增加开发效率. 序 我们在开发项目的过程中,经常会用到ListView.GridView这一 ...

  6. 【HEVC帧间预测论文】P1.6 A Fast HEVC Inter CU Selection Method Based on Pyramid Motion Divergence

    A Fast HEVC Inter CU Selection Method Based on Pyramid Motion Divergence <HEVC标准介绍.HEVC帧间预测论文笔记&g ...

  7. .NET多线程总结

    1.不需要传递参数,也不需要返回参数 我们知道启动一个线程最直观的办法是使用Thread类,具体步骤如下: public void test() { ThreadStart threadStart = ...

  8. 目标检测中bounding box regression

    https://zhuanlan.zhihu.com/p/26938549 RCNN实际包含两个子步骤,一是对上一步的输出向量进行分类(需要根据特征训练分类器):二是通过边界回归(bounding-b ...

  9. JavaEE-08 JSTL和EL

    学习要点 EL表达式 JSTL标签 EL表达式 为什么需要EL表达式 JavaBean在JSP中的局限 在JSP页面中嵌入大量的Java代码 获取JavaBean属性必须要实例化 强制类型转化 例如, ...

  10. P2756 网络流解决二分图最大匹配

    P2756 飞行员配对方案问题 题目背景 第二次世界大战时期.. 题目描述 P2756 飞行员配对方案问题 英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架飞机都需要配备在航行技能和语 ...