单调队列解决RMQ
来源:互联网 发布:域名续费价格 编辑:程序博客网 时间:2024/06/05 13:50
解决RMQ关键步骤:
单调队列的进队出队:
进队时,将进队的元素为e,从队尾往前扫描,直到找到一个不大于e的元素d,将e放在d之后,舍弃e之后的所有元素;如果没有找到这样一个d,则将e放在队头(此时队列里只有这一个元素)。
出队时,将出队的元素为e,从队头向后扫描,直到找到一个元素f比e后进队,舍弃f之前所有的。
时间复杂度:每个元素最多进队一次,出队一次,摊排分析下来仍然是 O(1)。
代码:
program pro;//单调队列最大值var que,pos:array[0..100]of longint; n,nn,h,t,i,j:longint;begin readln(n); h:=1; t:=0; for i:=1 to n do begin read(nn); while (t>=h)and(que[t]<nn) do dec(t); inc(t); que[t]:=nn; { pos[t]:=i;//记录在区间的位置 while (pos[h]<l) do inc(h);//如果该队首在区间外则出队 } write(que[1],' '); end;end.
0 0
- 单调队列解决RMQ
- 单调栈/单调队列/RMQ
- rmq/单调队列
- CF Hello 2015 C 单调队列解决二维RMQ
- POJ_2823_Sliding Window(RMQ / 单调队列)
- HDU5289 Assignment RMQ / 单调队列
- HDU 3530 RMQ+twopointer/单调队列
- HDOJ 5289 Assignment 【RMQ 二分 || 单调队列】
- Hdu-5289 Assignment (二分+RMQ || 单调队列)
- hdu 4123 Bob’s Race(单调队列或者rmq)
- POJ - 2823 Sliding Window(单调队列RMQ)
- hdu 3183 A Magic Lamp(RMQ或单调队列)
- [SYSU 1800][BNUOJ 27411] Sequence [单调队列][RMQ]
- UVALive 6609 Minimal Subarray Length rmq+二分or单调队列
- 树形DP+RMQ+单调队列(Bob’s Race HDU4123)
- HDU 5089 Assignment(rmq+二分 或 单调队列)
- hdu 5289 Assignment(RMQ,单调队列,multiset)
- NEFU 1268 区间最小值求和(单调队列||RMQ)
- Static class in Java
- fedora 安装唯知笔记(wiznote)
- 回击MLAA:NVIDIA FXAA抗锯齿性能实测、画质对比
- Storyboard多View的切换 [xcode 4.4.1]
- ubuntu14.04下好用的英汉词典
- 单调队列解决RMQ
- matplotlib画动态散点图
- Python 错误和异常小结_python_脚本之家
- GLUT学习入门
- mac下软件收集
- android adb 常用命令
- JAVA:角度前方交会算法GUI实现
- Linux命令 tar压缩排除指定目录
- JavaBean应用 web数据库交互