POJ 2823 Sliding Window - dp&单调队列优化
来源:互联网 发布:网络直销流程五步 编辑:程序博客网 时间:2024/06/05 00:19
题目描述
想清楚两件事:
1.当前区间前面的元素没用
2.当前区间有了较小的元素,则以前较大的元素没用,因为当前用不到,以后更用不到。
#include<cstdio>#define MAXN 1000000struct node{ int val,pos;}que[MAXN+10];int n,k,a[MAXN+10],mn[MAXN+10],mx[MAXN+10];void read(){ scanf("%d%d",&n,&k); for(int i=1;i<=n;i++) scanf("%d",&a[i]);}void DP(){ int front=0,rear=0; for(int i=1;i<=k;i++){ while(front<rear){ if(que[rear-1].val>=a[i]) rear--; else break; } que[rear].pos=i,que[rear].val=a[i]; rear++; } for(int i=k+1;i<=n+1;i++){ while(front<rear){ if(que[front].pos<i-k) front++; else break; } mn[i-k]=que[front].val; while(front<rear){ if(que[rear-1].val>=a[i]) rear--; else break; } que[rear].pos=i,que[rear].val=a[i]; rear++; } front=rear=0; for(int i=1;i<=k;i++){ while(front<rear){ if(que[rear-1].val<=a[i]) rear--; else break; } que[rear].pos=i,que[rear].val=a[i]; rear++; } for(int i=k+1;i<=n+1;i++){ while(front<rear){ if(que[front].pos<i-k) front++; else break; } mx[i-k]=que[front].val; while(front<rear){ if(que[rear-1].val<=a[i]) rear--; else break; } que[rear].pos=i,que[rear].val=a[i]; rear++; }}int main(){ read(); DP(); for(int i=1;i<=n-k+1;i++) printf("%d ",mn[i]); printf("\n"); for(int i=1;i<=n-k+1;i++) printf("%d ",mx[i]);}
0 0
- POJ 2823 Sliding Window 单调队列优化DP
- POJ 2823 Sliding Window - dp&单调队列优化
- 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 单调队列
- poj 2823 Sliding Window ( 单调队列 )
- Django开发问题~持续收集
- DOM的应用
- 欢迎使用CSDN-markdown编辑器
- 心血来潮,搞一个android的controller1.0
- C#读写txt文件的两种方法介绍
- POJ 2823 Sliding Window - dp&单调队列优化
- sbt构建scala工程并导入scala-eclipse开发spark
- False Positives和False Negative等含义
- 预览Android layouts, custom views和animations的插件
- 分享一个链接
- data too long for column 'name' at row 1的解决办法
- leetcode笔记:Majority Element
- NSUrl读取网络资源
- Androidx学习笔记(44)--- 多线程断点续传(Android项目)