POJ 2823 Sliding Window(单调队列入门水题)
来源:互联网 发布:chrome启用java插件 编辑:程序博客网 时间:2024/06/05 15:39
题目链接:http://http://poj.org/problem?id=2823
题意:
给出一个有n个数组成的数组和已知大小的滑动窗口
窗口每个时刻向后移动一位,求每个窗口的最大值和最小值
解题思路:
最大值:单调递减的队列。当窗口往后移动一位时,从队尾开始不断的删除比新增加的数小的数,相等的也删去。队头的位置如果小于i-k+1,那么也要删去,因为它不在这个窗口内
最小值:单调递增的队列。
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <string>using namespace std;#define inf 1000005struct node {int val,id;};node maxque[inf],minque[inf];int maxhead,maxtail,minhead,mintail;int pa[inf],pi[inf];int main(){int n,k,a;scanf("%d%d",&n,&k);maxhead=maxtail=0;minhead=mintail=0;for(int i=0;i<k;i++){scanf("%d",&a);while(minhead<mintail && minque[mintail-1].val>=a) mintail--;minque[mintail].val=a;minque[mintail].id=i;mintail++;while(maxhead<maxtail && maxque[maxtail-1].val<=a) maxtail--;maxque[maxtail].val=a;maxque[maxtail].id=i;maxtail++;}int la=0;for(int i=k;i<n;i++){pi[la] = minque[minhead].val;pa[la] = maxque[maxhead].val;la++;scanf("%d",&a);while(minque[minhead].id<i-k+1 && minhead<mintail) minhead++;while(minhead<mintail && minque[mintail-1].val>=a) mintail--;minque[mintail].val=a;minque[mintail].id=i;mintail++;while(maxque[maxhead].id<i-k+1 && maxhead<maxtail) maxhead++;while(maxhead<maxtail && maxque[maxtail-1].val<=a) maxtail--;maxque[maxtail].val=a;maxque[maxtail].id=i;maxtail++;}pa[la] = maxque[maxhead].val;pi[la] = minque[minhead].val;for(int i=0;i<=la;i++){if(i!=la)printf("%d ",pi[i]);else printf("%d\n",pi[i]);}for(int i=0;i<=la;i++){if(i!=la) printf("%d ",pa[i]);else printf("%d\n",pa[i]);}return 0;}
0 0
- POJ 2823 Sliding Window(单调队列入门水题)
- POJ 2823Sliding Window(单调队列水题)
- poj 2832 Sliding Window 单调队列入门
- poj 2823 Sliding Window (单调队列)
- POJ 2823 Sliding Window 堆 / 单调队列
- POJ 2823 Sliding Window 单调队列
- poj 2823 Sliding Window 【单调队列】
- poj 2823 Sliding Window(单调队列)
- POJ 2823 Sliding Window(单调队列)
- poj 2823 Sliding Window(简单单调队列)
- POJ 2823 Sliding Window(单调队列)
- POJ 2823 Sliding Window(单调队列)
- poj 2823 Sliding Window(单调队列)
- POJ 2823 Sliding Window(单调队列)
- poj 2823 Sliding Window(单调队列)
- POj 2823 Sliding Window 单调队列
- poj 2823 Sliding Window ( 单调队列 )
- 单调队列--poj-2823-Sliding Window
- HTML5基础14----PHP环境搭建
- AC自动机算法
- 一致哈希
- Oracle的优化器的RBO和CBO方式
- springmvc请求接收参数的几种方法
- POJ 2823 Sliding Window(单调队列入门水题)
- 浅析Afinal框架FinalBitmap缓存lru内存释放实现
- 进制
- Menu菜单之PopMenu
- 14级第一次测试 E - The Snail
- KVM/Qemu 工作原理系列目录
- 推荐每个PROFIBUS网段内至多连接32个从设备
- 继续前行连载3
- HTML5基础15----HTML5表单与PHP交互