https://www.luogu.org/problemnew/show/P2698#sub

老板需要你帮忙浇花。给出N滴水的坐标,y表示水滴的高度,x表示它下落到x轴的位置。

每滴水以每秒1个单位长度的速度下落。你需要把花盆放在x轴上的某个位置,使得从被花盆接着的第1滴水开始,到被花盆接着的最后1滴水结束,之间的时间差至少为D。

我们认为,只要水滴落到x轴上,与花盆的边沿对齐,就认为被接住。给出N滴水的坐标和D的大小,请算出最小的花盆的宽度W。

单调队列好题,参考洛谷题解。

emm……显然是单调队列,把x排个序,维护y的单调增,然后正反扫一遍,当y差值>=d更新答案并且弹出对首,当y不满足单调是弹出对尾。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
const int N=1e5+;
inline int read(){
int X=,w=;char ch=;
while(ch<''||ch>''){w|=ch=='-';ch=getchar();}
while(ch>=''&&ch<='')X=(X<<)+(X<<)+(ch^),ch=getchar();
return w?-X:X;
}
struct node{
int x,y;
}a[N],q[N];
bool cmp(node a,node b){
return a.x<b.x;
}
int main(){
int n=read(),d=read();
for(int i=;i<=n;i++){
a[i].x=read(),a[i].y=read();
}
sort(a+,a+n+,cmp);
int l=,r=,ans=1e9;
for(int i=;i<=n;i++){
while(l<r&&q[r-].y>a[i].y)r--;
q[r++]=a[i];
while(l<r&&q[r-].y-q[l].y>=d){
ans=min(ans,q[r-].x-q[l].x);
l++;
}
}
for(int i=n;i>=;i--){
while(l<r&&q[r-].y>a[i].y)r--;
q[r++]=a[i];
while(l<r&&q[r-].y-q[l].y>=d){
ans=min(ans,q[l].x-q[r-].x);
l++;
}
}
if(ans==1e9)puts("-1");
else printf("%d\n",ans);
return ;
}

+++++++++++++++++++++++++++++++++++++++++++

+本文作者:luyouqi233。               +

+欢迎访问我的博客:http://www.cnblogs.com/luyouqi233/+

+++++++++++++++++++++++++++++++++++++++++++

最新文章

  1. Android之计算缓存大小并且清空缓存
  2. C# UdpClient使用Receive和BeginReceive接收消息时的不同写法
  3. Tomcat部署遇到的问题
  4. jquery(ajax)与js(ajax)的比较
  5. NOIP200003方格取数
  6. 蓝桥杯 BASIC_17 矩阵乘法 (矩阵快速幂)
  7. 第十章 Vim程序编辑器学习
  8. hdu2157之矩阵快速幂
  9. MySQL 查询某时间段范围内的数据 补零
  10. 裸机编程与OS环境编程的有关思考
  11. 带你深入了解Web站点数据库的分布存储
  12. Struts2学习笔记(二) 使用通配符动态调用方法
  13. 二叉树,平衡树,红黑树,B~/B+树汇总
  14. PHP 对MySQLI预处理的包装
  15. Java并发编程:线程控制
  16. leetcode — flatten-binary-tree-to-linked-list
  17. SQLServer之创建主XML索引
  18. java 变量及数据类型、原码、反码、补码
  19. PaaS平台型IT运维&运营模式能给企业带来什么?
  20. set的一些数学运算

热门文章

  1. you selected does not support x86-64 instruction set
  2. libevent学习二(Working with an event loop)
  3. hdu2899Strange fuction(解方程+二分)
  4. HTML &lt;head&gt;里面的标签
  5. 初学Direct X(8) ——碰撞检测
  6. leetcode-帕斯卡三角形
  7. CSP201409-2:画图
  8. 《Effective C++》读书笔记 被你忽略的关于构造析构赋值
  9. 「雅礼集训 2017 Day1」市场 (线段树除法,区间最小,区间查询)
  10. vim—自动缩进(编写Python脚本)