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

题意中文的不说了;

做法:就是一个滑动区间维护最大值和最小值,首先,了解一条性质,对于满足要求的两个区间 (l1,r1)和(l2,r2)如果了l1<l2,那么r1<=r2,既r单调不降。或者我们可以枚举左端点l然后维护两个单调队列,就可以了。

具体看代码;

当然这道题使用ST表和二分也是一种很好的方法。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N=1e6+1110;
int q1[N],q2[N];
struct node
{int x,y;
}a[N];
bool cmp(node a,node b)
{return a.x<b.x;
}
int main()
{int n,d;scanf("%d%d",&n,&d);for(int i=1;i<=n;i++)scanf("%d%d",&a[i].x,&a[i].y);sort(a+1,a+n+1,cmp);int l=1,r=0,ans=N;int h1=1,t1=0,h2=1,t2=0;for(;l<=n;l++){while(a[q1[h1]].y-a[q2[h2]].y<d&&r<n){r++;while(a[q1[t1]].y<a[r].y&&h1<=t1) t1--;q1[++t1]=r;while(a[q2[t2]].y>a[r].y&&h2<=t2) t2--;q2[++t2]=r;}while(h1<=t1&&q1[h1]<l) h1++;while(h2<=t2&&q2[h2]<l) h2++;if(a[q1[h1]].y-a[q2[h2]].y>=d)ans=min(ans,a[r].x-a[l].x);}if(ans==N) ans=-1;cout<<ans<<endl;return 0;
}

洛谷 P2698 [USACO12MAR]花盆Flowerpot 单调队列相关推荐

  1. 洛谷P2698 [USACO12MAR]花盆Flowerpot

    P2698 [USACO12MAR]花盆Flowerpot 题目描述 Farmer John has been having trouble making his plants grow, and n ...

  2. [洛谷P2698] [USACO12MAR]花盆Flowerpot

    洛谷题目链接:[USACO12MAR]花盆Flowerpot 题目描述 Farmer John has been having trouble making his plants grow, and ...

  3. 洛谷 P2698 [USACO12MAR]花盆Flowerpot(抄)

    题目描述 Farmer John has been having trouble making his plants grow, and needs your help to water them p ...

  4. P2698 [USACO12MAR]花盆Flowerpot 单调队列

    https://www.luogu.org/problemnew/show/P2698 警示 用数组写双端队列的话,记得le = 1, ri = 0: le<=ri表示队列非空 题意 求一个最小 ...

  5. [洛谷P2698][USACO12MAR]花盆Flowerpot

    题目大意:$n$个坐标和时间.需要找到最小的一段区间使得这一段区间最大时间减去最小时间的差大于$d$ 题解:发现对于较优的区间$[l_i,r_i]$(即对于这个左端点,$r_i$是第一个符合条件的), ...

  6. #单调队列#洛谷 2698 [USACO12MAR]花盆Flowerpot

    题目 给出N滴水的坐标(X,Y),y表示水滴的高度,x表示它下落到x轴的位置.每滴水每秒从(x,y)到(x,y-1).你需要把花盆放在x轴上的某个位置,使得从开始接水到水滴完之间的时间差至少为D,只要 ...

  7. luogu 2698 [USACO12MAR]花盆Flowerpot 单调队列

    刷水~ Code: #include<bits/stdc++.h> using namespace std; #define setIO(s) freopen(s".in&quo ...

  8. P2698 [USACO12MAR]花盆Flowerpot(单调队列+二分)

    P2698 [USACO12MAR]花盆Flowerpot 一看标签........十分后悔 标签告诉你单调队列+二分了............ 每次二分花盆长度,蓝后开2个单调队列维护最大最小值 蓝 ...

  9. 洛谷P2698 [USACO12MAR]Flowerpot S

    P2698 [USACO12MAR]Flowerpot S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 思路: 宽度太小,第一滴和最后一滴的时间差只可能会小,宽度太大,时 ...

最新文章

  1. MSI文件制作全过程
  2. php下扩展php_curl.dll的安装
  3. vue axios 跨域_SpringBoot+Vue从零开始搭建系统(三)前后端整合二
  4. city code table广东_专访 | 杨龙——第20届广东十佳服装设计师
  5. python输入的方式有几种_Python读取键盘输入的2种方法
  6. HttpClient 发送 HTTP、HTTPS 请求的简单封装
  7. springboot细节挖掘(日志系统)
  8. 直接插入排序的python实现
  9. 算法入门——排序算法
  10. Python办公自动化——8行代码实现文件去重
  11. 危害移动数据安全的风险有哪些?
  12. aliddns ipv6_IPv6 + aliddns 实现群晖外网控制
  13. 理解 Rack 应用及其中间件
  14. 计算机在摄影应用,计算机X线摄影在临床中的应用
  15. 安徽财贸职业技术学院计算机专业老师,安徽财贸职业学院首届“十佳老师”评选结果揭晓...
  16. python中strip函数_python中strip()函数的理解
  17. 进程同步之生产者消费者模型
  18. pyhon使用CDS API抓取哥白尼气候数据(详细步骤)
  19. 团队分工及团队贡献分的讨论
  20. 基于Python的数据分析:数据库索引效率探究

热门文章

  1. [C++]小根堆 插入/删除/初始化
  2. 问题: Mac外联硬盘不能更改“-”中的一个或多个项目,因为它们正在使用中
  3. js判断当前电脑是否安装flash插件
  4. 删除win10桌面上IE的方法
  5. 关于C++ STL中的upper_bound()
  6. Bootrap 项目实战(微金所前端首页)第三部分(CSS,js源码)
  7. 相机拍出来的图片有“水波纹”的原因
  8. 二年级计算机课,小学二年级信息技术课程教案三篇
  9. 最近发现了一款图片批量处理工具
  10. js网页雪花效果jquery插件