BZOJ 2096([Poi2010]Pilots-单调队列-差值)
来源:互联网 发布:mysql的casewhen 编辑:程序博客网 时间:2024/05/16 14:41
2096: [Poi2010]Pilots
Time Limit: 30 Sec Memory Limit: 162 MBSubmit: 190 Solved: 97
[Submit][Status]
Description
Tz又耍畸形了!!他要当飞行员,他拿到了一个飞行员测试难度序列,他设定了一个难度差的最大值,在序列中他想找到一个最长的子串,任意两个难度差不会超过他设定的最大值。耍畸形一个人是不行的,于是他找到了你。
Input
输入:第一行两个有空格隔开的整数k(0<=k<=2000,000,000),n(1<=n<=3000,000),k代表Tz设定的最大值,n代表难度序列的长度。第二行为n个由空格隔开的整数ai(1<=ai<=2000,000,000),表示难度序列。
Output
输出:最大的字串长度。
Sample Input
3 9
5 1 3 5 8 6 6 9 10
5 1 3 5 8 6 6 9 10
Sample Output
4
(有两个子串的长度为4: 5, 8, 6, 6 和8, 6, 6, 9.最长子串的长度就是4)
(有两个子串的长度为4: 5, 8, 6, 6 和8, 6, 6, 9.最长子串的长度就是4)
HINT
Source
by poi
对,没错就是单调队列。
我第一次用priority_queue实现单调队列(其实差不多)
#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<algorithm>#include<functional>#include<cmath>#include<cctype>#include<cassert>#include<climits>#include<queue>using namespace std;#define For(i,n) for(int i=1;i<=n;i++)#define Rep(i,n) for(int i=0;i<n;i++)#define Fork(i,k,n) for(int i=k;i<=n;i++)#define ForD(i,n) for(int i=n;i;i--)#define Forp(x) for(int p=pre[x];p;p=next[p])#define RepD(i,n) for(int i=n;i>=0;i--)#define MEM(a) memset(a,0,sizeof(a))#define MEMI(a) memset(a,127,sizeof(a))#define MEMi(a) memset(a,128,sizeof(a))#define INF (2139062143)#define F (1000000009)#define MAXN (3000000+10)#define MAXK (2000000000)typedef long long ll;int n;ll k,a[MAXN];struct node{ int v,i; node(){} node(int _i,int _v):v(_v),i(_i){} friend bool operator<(node a,node b){return a.v<b.v;};};priority_queue<node> h1,h2;int main(){// freopen("bzoj2096.in","r",stdin); cin>>k>>n; int l=1,ans=0; For(i,n) { scanf("%lld",&a[i]); h1.push(node(i,a[i])),h2.push(node(i,-a[i])); while (h1.top().v+h2.top().v>k) { l++; while (!h1.empty()&&h1.top().i<l) h1.pop(); while (!h2.empty()&&h2.top().i<l) h2.pop(); } ans=max(ans,i-l+1); // cout<<h1.top()<<' '<<h2.top()<<endl; } cout<<ans<<endl; // while(1); return 0;}
- BZOJ 2096([Poi2010]Pilots-单调队列-差值)
- BZOJ 2096 Poi2010 Pilots 单调队列
- BZOJ 2096: [Poi2010]Pilots|单调队列
- bzoj 2096: [Poi2010]Pilots 单调队列
- [BZOJ 2096][Poi2010]Pilots:单调队列
- 单调队列 BZOJ 2096 [Poi2010]Pilots
- BZOJ 2096: [Poi2010]Pilots 单调队列题解
- BZOJ 2096 [Poi2010]Pilots 单调队列
- bzoj 2096: [Poi2010]Pilots (二分答案+单调队列)
- 【BZOJ】【P2096】【Poi2010】【Pilots】【题解】【二分+单调队列】
- 【bzoj2096】[Poi2010]Pilots 单调队列
- BZOJ 2096: pilots 单调队列
- [BZOJ 2096]Poi2010 Pilots
- BZOJ 2096: [Poi2010]Pilots
- BZOJ 2096 [Poi2010]Pilots
- [BZOJ 2096][Poi2010]Pilots
- bzoj 2096: [Poi2010]Pilots
- 2096: [Poi2010]Pilots 单调队列维护最值
- “解决问题”与“消灭问题”
- GoAsm 定义unicode char
- poj 2049 Finding Nemo 建迷宫预处理+优先队列bfs
- form表单enctype="multipart/form-data"
- Oracle(三) – 增强子查询例子
- BZOJ 2096([Poi2010]Pilots-单调队列-差值)
- 用GetGlyphOutline搞字模
- Oracle(二) – 事务控制解释
- Android消息推送
- Windows API---GetGlyphOutline函数
- Oracle(二) – 隐式的事务提交或回滚动作
- 【呆子杂谈】之三:你懂个毛的营销心理学!
- 星期一 要开始 做 oracle 的运维了
- Django学习笔记(五)