花盆Flowerpot[USACO12MAR]
题意:
平面上n个点,给出d,求最小的k使得在某个横坐标长度为k的区间内的纵坐标的最大值与最小值之差超过d
题解:
如果做过poj2823这道题的话,这道题应该是挺好想的。(没做过的同学可以点这里)
我们可以二分长度k,然后就和上面这道题的操作一样了。复杂度是O(n*logn),1e5的数据完全没问题。
但其实我们可以不用二分答案。
我们假设区间[L1,R1]满足max-min>=d,且对于左端点来说,R1是满足条件的最左点。那么对于L2>L1,满足max-min>=d的区间[L2,R2]一定满足R2>=R1。(应该挺好想的吧qaq) 不过我们还是证明一下好了。
我们假设R2<R1,那么既然[L2,R2]都满足条件了,所以[L1,R2]也一定是满足条件的,这与题设不符。
所以我们从左到右枚举左端点,用单调队列维护区间纵坐标即可。
上代码:
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<queue> #define LL long long #define RI register int using namespace std; const int INF = 0x7ffffff ; const int N = 1e5 + 10 ;inline int read() {int k = 0 , f = 1 ; char c = getchar() ;for( ; !isdigit(c) ; c = getchar())if(c == '-') f = -1 ;for( ; isdigit(c) ; c = getchar())k = k*10 + c-'0' ;return k*f ; } struct point {int x, y ; }p[N] ; int n, d ; deque<int>q1 ; // 单调递减序列维护最大值 deque<int>q2 ; // 单调递增序列维护最小值 deque<int>q11 ; deque<int>q22 ; inline bool cmp1(point s,point t) { return s.x < t.x ; } int main() {n = read(), d = read() ;for(int i=1;i<=n;i++) {p[i].x = read(), p[i].y = read() ;}sort(p+1,p+n+1,cmp1) ;int res = 0, ans = INF ;int i = 0 ; // 右端点 for(int j=1;j<=n;j++) { // j维护左端点while(q1.size() && q11.front() < j) q1.pop_front(), q11.pop_front() ;while(q2.size() && q22.front() < j) q2.pop_front(), q22.pop_front() ;if(q1.size() && q1.size()) res = q1.front()-q2.front() ;else res = 0 ;while(res < d && i < n) {i++ ;while(q1.size() && q1.back() <= p[i].y) q1.pop_back(), q11.pop_back() ;while(q2.size() && q2.back() >= p[i].y) q2.pop_back(), q22.pop_back() ;q1.push_back(p[i].y), q11.push_back(i) ; q2.push_back(p[i].y), q22.push_back(i) ;res = q1.front()-q2.front() ;}if(res >= d) {ans = min(ans,p[i].x-p[j].x) ;}}if(ans == INF) printf("-1") ; else printf("%d",ans) ;return 0 ; }
View Code
——end ;
转载于:https://www.cnblogs.com/zub23333/p/8569713.html
花盆Flowerpot[USACO12MAR]相关推荐
- 洛谷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 ...
- P2698 [USACO12MAR]花盆Flowerpot(单调队列+二分)
P2698 [USACO12MAR]花盆Flowerpot 一看标签........十分后悔 标签告诉你单调队列+二分了............ 每次二分花盆长度,蓝后开2个单调队列维护最大最小值 蓝 ...
- 洛谷 P2698 [USACO12MAR]花盆Flowerpot(抄)
题目描述 Farmer John has been having trouble making his plants grow, and needs your help to water them p ...
- [USACO12MAR]花盆Flowerpot 二分答案+单调队列
题意: 给出N滴水的坐标,y表示水滴的高度,x表示它下落到x轴的位置. 每滴水以每秒1个单位长度的速度下落.你需要把花盆放在x轴上的某个位置,使得从被花盆接着的第1滴水开始,到被花盆接着的最后1滴水结 ...
- luogu P2698 [USACO12MAR]花盆Flowerpot
背景: 集训Day3Day3Day3,单调队列开启. 其实原来就会,但是好像没做几题(除了斜率优化的). 打算用111至222天做一些题(太菜,大佬勿喷). rank=20000+rank=20000 ...
- [USACO12MAR]花盆Flowerpot
题面描述 传送门 思路 观察完题意之后,我们看到最小 就会想到二分枚举花盆长度xxx,需要用两个队列来维护最大值与最小值. 我们检测[i,i−x+1][i,i-x+1][i,i−x+1]中是否有两个水 ...
- [题解]LuoGu2698: [USACO12MAR]花盆Flowerpot
原题传送门 这道题在洛谷难度为蓝题(提高+省选-)个人认为难度普及+够了吧 不难想到单调队列的做法,首先二分答案,对于每个花盆宽度,我们进行O(n)的验证 维护两个单调队列,分别维护纵坐标的最小值与最 ...
- #单调队列#洛谷 2698 [USACO12MAR]花盆Flowerpot
题目 给出N滴水的坐标(X,Y),y表示水滴的高度,x表示它下落到x轴的位置.每滴水每秒从(x,y)到(x,y-1).你需要把花盆放在x轴上的某个位置,使得从开始接水到水滴完之间的时间差至少为D,只要 ...
最新文章
- 向上取整的方法_瓷砖测量的方法有哪些?瓷砖尺寸一般是多少?
- 沸腾了!苏宁全员涨薪,每月最高多1万6!网友:这一刻,我希望我是苏宁人...
- 前端能读取压缩包内容吗?_解决前端多环境部署的痛点
- Android--批量插入数据到SQLite数据库
- Activiti源码之建造者模式 Builder
- linux rpm mysql mysql_config,Linux CentOS6 mysql rpm安装
- server的自增主键返回函数 sql_SQL自增主键函数
- 努力学计算机四年,终于进腾讯了!
- tomcat端口被占用的两个解决方法
- java输入一串字符串反转_反转Java中的字符串
- VS2017 远程调试linux(centos).net core
- exls下载后显示jsp_jsp笔记
- 测试知识总结1 —— 测试的分类
- Swift - 访问通讯录-使用AddressBook.framework和AddressBookUI.framework框架实现
- fault、error、failure辨析
- C++ endl 的本质是什么
- Android Studio搭建阿里云生活物联网平台自有品牌APP
- 硬盘挂载 mount 详细步骤及遇到问题“Mount is denied because the NTFS volume is already exclusively opened”
- 三年前找工作的我,希望给正在求职的你一些启发
- kvm 模块加载时报错:insmod: error inserting 'kvm.ko': -1 Unknown symbol in module
热门文章
- ai技术与能源行业_最终AI能源效率的新方程式
- npm install xxx 出现Unexpected token < in
- 惠普战66prog2拆机_惠普战66二代内部做工怎么样?全新惠普战66二代拆机图解评测(含视频教程)...
- provider: SQL Network Interfaces , error: 26 - Error Locating Server / Instance
- python小玩意——猜数字游戏
- php artisan command,artisan command 小技巧
- HTML学习笔记——列表标签
- 致敬达叔!Python带你回顾达叔出演过的作品与合作过的演员
- simulink电路仿真
- hive通过grouping sets多维度组合去重统计避免使用distinct