HDU 3530 Subsequence
来源:互联网 发布:敏感资源无法加速 知乎 编辑:程序博客网 时间:2024/06/03 21:29
大意:给出一列数字,以及m和k,求一个最长的序列,使得m<=max-min<=k.求这个最长序列的长度。
做法:单调队列维护最大最小值。
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;#define maxn 1000010struct node{ int num , id; node(){} node(int _num , int _id) { num = _num; id = _id; }}q1[maxn],q2[maxn];int a[maxn];int main(){ int n , k , m ; while(~scanf("%d%d%d",&n,&m,&k)) { int head1 , rear1 , head2 , rear2 ; head1 = rear1 = head2 = rear2 = 0; q1[0].id = q1[0].num = q2[0].id = q2[0].num = 0; for(int i = 1 ; i <= n ; i++) scanf("%d",&a[i]); int l = 0 , ans = 0; for(int i = 1 ; i <= n ; i++) { while(head1 <= rear1 &&q1[rear1].num > a[i]) rear1--;//递增 q1[++rear1] = node(a[i],i); while(head2 <= rear2 &&q2[rear2].num < a[i]) rear2--;//递减 q2[++rear2] = node(a[i],i); while(q2[head2].num - q1[head1].num > k) l = q2[head2].id < q1[head1].id ? q2[head2++].id : q1[head1++].id; if(q2[head2].num - q1[head1].num >= m) ans = max(ans , i - l); } printf("%d\n",ans); } return 0;}
0 0
- HDU 3530 Subsequence
- hdu 3530 Subsequence
- HDU 3530 Subsequence
- HDU - 3530 Subsequence
- HDU-3530-Subsequence
- hdu-3530-Subsequence
- HDU 3530 Subsequence
- hdu 3530 Subsequence
- HDU 3530 Subsequence
- HDU 3530 Subsequence
- hdu 3530 Subsequence
- HDU 3530 Subsequence
- [hdu 3530]Subsequence
- HDU 3530 Subsequence
- HDU 3530 Subsequence
- HDU 3530 Subsequence 【单调队列】
- hdu 3530 Subsequence //单调队列
- hdu 3530 Subsequence 单调队列
- Android 性能分析案例
- 公司考核题-(ORACLE篇一)
- jsp页面实现日期输入
- Differences Between Perform Quality Assurance and Control Quality Processes
- 猪猪侠神器--wydomain使用感受,太赞了!!!好东西呀!!!
- HDU 3530 Subsequence
- mac下python安装pil模块缺少stdio.h的错误
- sum it up(wrong answer)
- 新年杂想
- const关键字
- eclipse的一些快捷键
- CodeForces 433A Kitahara Haruki's Gift
- 细数泄漏过的数据库,目前已知公开的!
- linux 下gprof 和 oprofile 分析程序性能工具