
RMQ
notmuch
这个作者很懒,什么都没留下…
展开
-
洛谷P1440 求m区间内的最小值(RMQ/笛卡尔树)
题意:一个含有n项的数列(n<=2000000),求出每一项前的m个数到它这个区间内的最小值。若前面的数不足m项则从第1个数开始,若前面没有数则输出0。RMQ代码如下:#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<c...原创 2019-08-24 10:24:18 · 415 阅读 · 0 评论 -
洛谷P2216 [HAOI2007]理想的正方形(RMQ+枚举)
这道题可以用RMQ来做。RMQ原本是对一个数列进行预处理,这里我们只需要对矩阵的每一行都进行一次预处理就好。然后枚举可能的所有的正方形,用RMQ查询这个正方形里面的最大值和最小值,不断更新最大值与最小值之差就好。// luogu-judger-enable-o2#include<cstdio>#include<iostream>#include<cstrin...原创 2019-08-24 21:46:29 · 194 阅读 · 0 评论 -
洛谷P2471 [SCOI2007]降雨量(RMQ)
我们可以对应输入顺序,为每个年份设置一个编号,用map来完成年份与编号之间的对应。接下来用RMQ算法查询即可。但是这道题有很多的坑,没有仔细想清,很容易就出错。正确的思路如下:输入完n个年份a[n],用map映射,RMQ预处理完后,m次询问,每次输入Y,X:1.Y>=X,false;2.Y<X[1]Y,X都没有出现在a[n]中,输出maybe;[2]Y出现在a[n]中,X...原创 2019-08-24 22:22:11 · 351 阅读 · 1 评论 -
POJ1330,Nearest Common Ancestors(LCA+RMQ/倍增/Tarjan)
LCA的裸题。LCA可以用三种方式求解,其中离线算法有Tarjan,在线算法有倍增,RMQ,个人觉得RMQ效率会高一点。有个博客讲解的很好,链接:https://blog.youkuaiyun.com/my_sunshine26/article/details/72717112这里我总结了一下三种方法的关键点:1.Tarjan求LCA核心:离线+DFS后序遍历+并查集1.开设vis[i], fa[...原创 2019-08-25 14:36:52 · 179 阅读 · 0 评论 -
POJ1986,Distance Queries(LCA)
这道题可以用LCA做出来,虽然最短路可以做出来,但是询问次数很多,每询问一次就求一次最短路的话,时间开销是很大的。这里我是用LCA转化为RMQ求出来,需要注意的一点就是题所给的图可能不是连通的,所以在DFS的时候要稍作改变。#include<cstdio>#include<algorithm>#include<cstring>#include<a...原创 2019-08-25 17:55:38 · 150 阅读 · 0 评论