博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【单调队列】滑动窗口
阅读量:7021 次
发布时间:2019-06-28

本文共 1029 字,大约阅读时间需要 3 分钟。

单调队列经典题目直接上代码

1 #include
2 #include
3 #include
4 using namespace std; 5 const int sz = 1000010; 6 int n, k; 7 int q[sz], p[sz], a[sz]; 8 void work_min() { 9 int head = 1, tail = 0;10 for(int i = 1; i <= n; i++) {11 while(head <= tail && q[tail] >= a[i]) tail--;12 q[++tail] = a[i];13 p[tail] = i;14 while(p[head] <= i-k) head++;15 if(i >= k) printf("%d ", q[head]);16 }17 printf("\n");18 }19 void work_max() {20 int head = 1, tail = 0;21 for(int i = 1; i <= n; i++) {22 while(head <= tail && a[i] >= q[tail]) tail--;23 q[++tail] = a[i];24 p[tail] = i;25 while(p[head] <= i-k) head++;26 if(i >= k) printf("%d ", q[head]);27 }28 printf("\n");29 }30 int main() {31 scanf("%d%d", &n, &k);32 for(int i = 1; i <= n; i++)33 scanf("%d", &a[i]);34 work_min();35 work_max();36 return 0;37 }

 

转载于:https://www.cnblogs.com/Hwjia/p/9884133.html

你可能感兴趣的文章
Cordova 3.x 配置文件config.xml强制横屏
查看>>
Unity3D脚本中文系列教程(八)
查看>>
ACA烤箱菜单各项温度
查看>>
Chronometer控件实现的Android计时器
查看>>
[bug]WCF 内存入口检查失败 Memory gates checking failed
查看>>
<script> 的defer和async
查看>>
JS学习笔记-OO疑问之对象创建
查看>>
AutoIT 实现Firefox下载
查看>>
Emacs常用命令汇总
查看>>
redis 写磁盘出错 Can’t save in background: fork: Cannot allocate memory (转)
查看>>
android数据储存之应用安装位置
查看>>
配置Log4j(非常具体)
查看>>
linux 下安装mysql
查看>>
【翻译】ExtJS vs AngularJS
查看>>
艰苦的RAW格式数据恢复之旅
查看>>
使用fragment,Pad手机共用一套代码
查看>>
U3D-FSM有限状态机的简单设计
查看>>
JAVAWEB 生成excel文字在一格显示两位不变成#号
查看>>
启动MFC程序的时候报错:0xC0000005: 读取位置 0x00000000 时发生访问冲突
查看>>
数据库schema设计与优化
查看>>