hdu 5289 单调队列
来源:互联网 发布:java cms框架搭建 编辑:程序博客网 时间:2024/05/19 03:25
#include <iostream>#include <cstdio>#include <queue>#include <deque>using namespace std;typedef pair<int, int> P;#define maxn 100000 + 10deque<long long> Q1; //updeque<long long> Q2; //downint n, k;long long a[maxn];int main(){ int T; scanf("%d", &T); while(T--) { scanf("%d%d", &n, &k); for(int i=1; i<=n; i++) scanf("%I64d", &a[i]); while(!Q1.empty()) Q1.pop_back(); while(!Q2.empty()) Q2.pop_back(); int l = 1, r = 1; long long ans = 0; while(r <= n) { while(!Q1.empty() && a[r] < Q1.back()) Q1.pop_back();//注意这里构造单调队列 如果是 < ,即为非严格单调单调增序列 Q1.push_back(a[r]); while(!Q2.empty() && a[r] > Q2.back()) Q2.pop_back(); Q2.push_back(a[r]); while(!Q1.empty() && !Q2.empty() && Q2.front() - Q1.front() >= k) { if(Q1.front() == a[l]) Q1.pop_front(); if(Q2.front() == a[l]) Q2.pop_front(); l++; } ans += (r - l + 1); r++; } printf("%I64d\n", ans); } return 0;}
1 0
- hdu 5289 单调队列
- hdu 5289 单调队列
- HDU 5289 单调队列,multiset
- HDU 5289 Assignment(单调队列)
- HDU-5289(单调队列)
- Hdu-5289 Assignment (二分+RMQ || 单调队列)
- hdu 1506#单调队列
- hdu 4193#单调队列
- HDU 4193 单调队列
- HDU 3415 单调队列
- HDU 4193单调队列
- HDU 3530 单调队列
- HDU 3415单调队列
- hdu 3415 单调队列
- HDU 3530 单调队列
- hdu 1506 单调队列
- hdu 3415 单调队列
- hdu 4193(单调队列)
- UK 更新惊魂记
- android简单的图片适配
- 多继承与虚拟继承
- 150725培训心得(vector)
- python闭包,装饰器
- hdu 5289 单调队列
- Timer的用法
- Handler1
- 学习Spark:一.Spark简介
- BIND97安装配置
- jquery的ajax同步和异步
- HTML-块级元素和内联元素
- hdu 2156 分数矩阵
- 黑马程序员---c语言中的分支语句 switch与if