luogu 2698 [USACO12MAR]花盆Flowerpot 单调队列
刷水~
Code:
#include<bits/stdc++.h>
using namespace std;
#define setIO(s) freopen(s".in","r",stdin)
#define maxn 300000
#define inf 1000000
deque<int>p,q;
struct Node
{ int x,y;
}nd[maxn];
bool cmp(Node a, Node b)
{return a.x < b.x;
}
int main()
{// setIO("input"); int n,D,ans=inf; scanf("%d%d",&n,&D);for(int i=1;i<=n;++i) {scanf("%d%d",&nd[i].x,&nd[i].y); }sort(nd+1,nd+1+n,cmp); for(int i=1;i<=n;++i) {while(!p.empty()&&nd[i].y>=nd[p.back()].y) p.pop_back(); while(!q.empty()&&nd[i].y<=nd[q.back()].y) q.pop_back(); p.push_back(i), q.push_back(i); int pre=0; while(!p.empty()&&nd[p.front()].y-nd[i].y>=D) { pre=nd[p.front()].x; p.pop_front(); } if(pre) ans=min(ans, nd[i].x - pre); pre=0; while(!q.empty()&&nd[i].y-nd[q.front()].y>=D) { pre=nd[q.front()].x; q.pop_front(); } if(pre) ans=min(ans, nd[i].x - pre); }printf("%d\n",ans==inf?-1:ans); return 0;
}
luogu 2698 [USACO12MAR]花盆Flowerpot 单调队列相关推荐
- 洛谷 P2698 [USACO12MAR]花盆Flowerpot 单调队列
https://www.luogu.org/problemnew/show/P2698 题意中文的不说了: 做法:就是一个滑动区间维护最大值和最小值,首先,了解一条性质,对于满足要求的两个区间 (l1 ...
- P2698 [USACO12MAR]花盆Flowerpot 单调队列
https://www.luogu.org/problemnew/show/P2698 警示 用数组写双端队列的话,记得le = 1, ri = 0: le<=ri表示队列非空 题意 求一个最小 ...
- #单调队列#洛谷 2698 [USACO12MAR]花盆Flowerpot
题目 给出N滴水的坐标(X,Y),y表示水滴的高度,x表示它下落到x轴的位置.每滴水每秒从(x,y)到(x,y-1).你需要把花盆放在x轴上的某个位置,使得从开始接水到水滴完之间的时间差至少为D,只要 ...
- luogu P2698 [USACO12MAR]花盆Flowerpot
背景: 集训Day3Day3Day3,单调队列开启. 其实原来就会,但是好像没做几题(除了斜率优化的). 打算用111至222天做一些题(太菜,大佬勿喷). rank=20000+rank=20000 ...
- P2698 [USACO12MAR]花盆Flowerpot(单调队列+二分)
P2698 [USACO12MAR]花盆Flowerpot 一看标签........十分后悔 标签告诉你单调队列+二分了............ 每次二分花盆长度,蓝后开2个单调队列维护最大最小值 蓝 ...
- 洛谷P2698 [USACO12MAR]花盆Flowerpot
P2698 [USACO12MAR]花盆Flowerpot 题目描述 Farmer John has been having trouble making his plants grow, and n ...
- [洛谷P2698] [USACO12MAR]花盆Flowerpot
洛谷题目链接:[USACO12MAR]花盆Flowerpot 题目描述 Farmer John has been having trouble making his plants grow, and ...
- [USACO12MAR]花盆Flowerpot 二分答案+单调队列
题意: 给出N滴水的坐标,y表示水滴的高度,x表示它下落到x轴的位置. 每滴水以每秒1个单位长度的速度下落.你需要把花盆放在x轴上的某个位置,使得从被花盆接着的第1滴水开始,到被花盆接着的最后1滴水结 ...
- [USACO12MAR]花盆Flowerpot(二分答案+单调队列)
传送门 题意:直接看题意即可 题解:首先可以通过二分枚举区间大小,然后通过单调队列求出每个区间的最大值和最小值进行比较,最后得出答案即可. 附上代码: #include<bits/stdc++. ...
最新文章
- FPGA之道(64)代码中的约束信息(一)保持约束
- python3.6.4安装教程-centos7中安装python3.6.4的教程
- webstock php,workerman_connection
- 子集生成 --二进制法
- @value 数组_为什么不推荐用for...in遍历数组
- 开发函数计算的正确姿势——借助 Ghostscript 将 PDF 转换成 JPG
- android 进程有时间片运行,kernel笔记——进程调度
- 【clickhouse】Port 9000 is for clickhouse-client program
- 程序员面试金典——18.1另类加法
- Swift 编程语言
- jqGrid复制表格数据到另外一张表中
- BUUCTF MISC刷题
- 赣州旅游职业学校学计算机,赣州旅游职业学校是公办的吗
- php怎么检测数据类型,PHP检测数据类型的几种方法总结和技巧
- QT窗口:透明与半透明、不规则异形窗口、控件透明与半透明、不规则异形按钮
- src和href的区别
- OpenCV4.x图像处理实例-自动包围曝光(Auto Exposure Bracketing,AEB)
- 深度学习在静息态功能磁共振成像中的应用
- AD2019查看网络走线
- 西安电子科技大学计算机学院 段毅,计算机网络与信息安全国家级实验教学示范中心举办“金山云AIoT教学模型培训交流活动”...