https://codeforces.com/problemset/problem/1041/D


思路:

可以发现,选择的起点在当前某个线段区间的左端点一定不会更差。

于是On枚举起点位置,快速找到其终点在的区间。下降的过程满足单调性,于是二分最终所在的区间。中间的check用前缀和处理区间的差值的累加就可以O1check了。

#include<iostream>
#include<vector>
#include<queue>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<cstdio>
#include<algorithm>
#define debug(a) cout<<#a<<"="<<a<<endl;
using namespace std;
const int maxn=2e5+1000;
typedef long long LL;
inline LL read(){LL x=0,f=1;char ch=getchar();   while (!isdigit(ch)){if (ch=='-') f=-1;ch=getchar();}while (isdigit(ch)){x=x*10+ch-48;ch=getchar();}
return x*f;}
struct P{LL l,r;
}a[maxn];
LL sum[maxn];
bool check(LL p,LL q,LL n,LL h){LL downdis=sum[q]-sum[p];/// cout<<"p="<<p<<" "<<"q="<<q<<" "<<"downdis="<<downdis<<"\n";if(h-downdis>0) return true;else return false;
}
int main(void)
{cin.tie(0);std::ios::sync_with_stdio(false);LL n,h;cin>>n>>h;for(LL i=1;i<=n;i++){cin>>a[i].l>>a[i].r;}sum[1]=0;for(LL i=2;i<=n;i++){sum[i]=sum[i-1]+(a[i].l-a[i-1].r);}LL ans=0;for(LL i=1;i<=n;i++){///枚举起点,处于某个线段区间的左端点LL l=i;LL r=n;while(l<r){LL mid=(l+r+1)>>1;if(check(i,mid,n,h)) l=mid;else r=mid-1;}/// cout<<"i="<<i<<" "<<"l="<<l<<"\n";LL res1=a[l].r-a[i].l;LL temp=h;temp-=(sum[l]-sum[i]);res1+=temp;ans=max(ans,res1);}cout<<ans<<"\n";
return 0;
}

1041D - Glider(思维+二分+前缀和)相关推荐

  1. codeforces1041D Glider(二分/前缀和/贪心)

    题目链接:codeforces 1041D 题目思路: 显然,为了尽可能覆盖多的区间,起点一定是某段区间的左端点,故枚举左端点,二分查找终点,下降的高度用前缀和记录即可.具体参见代码. 参考代码: # ...

  2. Codeforces Round #509 D - Glider(枚举二分前缀和)

    题意: 给出滑翔机的高度h 以及有n段上升气流区间,滑翔机在非上升气流区间会以每前进一个单位 高度就下降一个单位的 速度坠落 ,而在有上升气流的区间,滑翔机将持续前进,并不会下落,问在一维坐标上的哪个 ...

  3. CodeForces 1041D Glider 枚举+二分

    题目链接:https://vjudge.net/problem/CodeForces-1041D/origin 题意: 飞行员在区间[-1e9,1e9]内(这个一定注意!!!),从高度为k处跳伞,会向 ...

  4. P1083 借教室(标记永久化线段树/二分+前缀和)难度⭐⭐⭐★

    P1083 借教室 标记永久化线段树 很典型的区间修改问题,先输入赋值建树(这就是最典型的线段树呀,别忘了),然后修改 这里问的是是否有足够的空教室,所以线段树中 min 代表的是当前区间内最小的剩余 ...

  5. POJ 3061 (二分+前缀和or尺取法)

    题目链接: http://poj.org/problem?id=3061 题目大意:找到最短的序列长度,使得序列元素和大于S. 解题思路: 两种思路. 一种是二分+前缀和.复杂度O(nlogn).有点 ...

  6. 【实数二分/前缀和维护】Best Cow Fences

    Poj 2018 Best Cow Fences 实数二分+前缀和维护 调了一晚上, 但发现没什么注意事项orz 无输出只因eps定义成了int型QAQ哭唧唧 #include<cstdio&g ...

  7. [二分][前缀和]洛谷 P1083 借教室

    题意: 有n天,m个请求.n天内每天的可用教室为a_ia​i​​个,m个请求是从l到r天租借t个教室. 如果某一天的教室分配无法满足,则输出当前的订单号. 思考: 一开始根本没想到这个东西怎么二分.. ...

  8. 聪明的质监员 2011年NOIP全国联赛提高组(二分+前缀和)

    聪明的质监员 2011年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold   题目描述 Description 小 T 是一名质量监督员, ...

  9. 【CodeForces - 777C】Alyona and Spreadsheet(思维,前缀和)

    题干: During the lesson small girl Alyona works with one famous spreadsheet computer program and learn ...

最新文章

  1. NVIDIA TensorRT高性能深度学习推理
  2. java获取屏幕图像_Java捕获当前屏幕图像
  3. Backbone发展与语义分割网络发展
  4. ASP.NET Core CORS 简单使用
  5. Tomcat、JDK 历史版本下载地址
  6. JAVA中运用数组的四种排序方法
  7. Java编码安全规范
  8. Python爬虫理论 | (2) 网络请求与响应
  9. 蓝桥杯 Java 算法提高 盾神与积木游戏
  10. idea破解(到2100年)
  11. bp神经网络训练过程matlab,bp神经网络训练时间
  12. 依图科技暑期实习生面试经验
  13. 第一(关于list及dict)
  14. 有趣的隐式图模型——USACO CONTEST FEB07 白银莲花池
  15. HALCON学习论坛
  16. 2015年总结,平平淡淡的一年.
  17. ROS学习小笔记(Topic通信 ,service通信,参数服务器)
  18. python的数据与matlab互通:SciPy
  19. 计算机网络——知识点
  20. 函数最值题目及答案_高一函数题目及答案解析

热门文章

  1. MYSQL在众多表中查询表名和字段名
  2. 分布式面试之ActiveMQ面试题
  3. Ceph优化系列(二):Ceph主要配置参数详解
  4. 关于对掘金和csdn的认识
  5. 设置CSS透明度的方法
  6. 小红帽linux各功能中英,英文短剧《小红帽》剧本台词完整版---中英对照文本版...
  7. 【Unity 3D】3D游戏跑酷小子实战教学(附源码和步骤 超详细)
  8. kali社会工程工具包基本使用
  9. DP4344兼容CS4344-DA转换器
  10. 使用ssh公钥私钥登陆服务器并配置Sublime的SFTP通过私钥登陆