很好的一道题,想了很久。首先突破的是,可以找到枚举其中一边,假设是尾部y,然后快速找出满足条件的最大的头部x,连续区间的和很容易想到借助部分和的思想,如果是从y开始往前面累加,那么就是一个关于y的后缀和。如果答案的一边在y,那么就转化成了对后缀和的RMQ。y的后缀和y-1或者y+1的后缀是差不多的,...
分类:
其他好文 时间:
2015-12-03 21:15:39
阅读次数:
129
本题要求第k小的distinct子串,可以根据height数组,二分出这个第k小子串所在后缀的位置信息。由于题目要求子串起始下标尽可能小。所以再在rank数组中,二分出与当前后缀LCP大于等于所求子串长度的范围。通过RMQ求出这个范围中最小的sa。 1 #include 2 #include ...
分类:
其他好文 时间:
2015-11-25 00:24:23
阅读次数:
290
0. 概要最近公共祖先,指的是在一颗有根树上,两个点的公共祖先中,深度最大的那个。最直接的应用是求无权树上两个点的最短距离:$distance(u, v) = depth(u) + depth(v) - 2depth(lca(u, v))$。再有其他的应用则以后再提。1 基于 dfs 序列上RMQ ...
分类:
其他好文 时间:
2015-11-24 22:54:47
阅读次数:
194
题目:[USACO Jan07] 均衡队形描述:题目描述农夫约翰的 N (1 ≤ N ≤ 50,000) 头奶牛,每天挤奶时总会按同样的顺序站好。一日,农夫约翰决定为奶牛们举行一个“终极飞盘”比赛。为简化问题,他将从奶牛队列中选出一个连续区间来进行游戏。不过,参加游戏的奶牛要玩的开心的话就不能在身高...
分类:
其他好文 时间:
2015-11-24 21:09:13
阅读次数:
123
RMQ (Range Minimum/Maximum Query)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,jaa[j] then min:=aa[j]; write(min,' '); continue; end; for j:=((t1-1)*z+tt1) t...
分类:
其他好文 时间:
2015-11-24 21:08:44
阅读次数:
230
RMQ算法引入:例1、题目描述输入N个数和M次询问,每次询问一个区间[L,R],求第L个数到R个数之间的最大值。第一种方法:大暴力之术。 但是……时间复杂度最坏会达到 $O(NM)$,一半左右的点绝对爆T。所以,引入了————RMQ!RMQ:Range Maximum(Minimum) Query....
分类:
编程语言 时间:
2015-11-24 14:50:42
阅读次数:
174
士兵杀敌(四)时间限制:2000 ms | 内存限制:65535 KB难度:5描述南将军麾下有百万精兵,现已知共有M个士兵,编号为1~M,每次有任务的时候,总会有一批编号连在一起人请战(编号相近的人经常在一块,相互之间比较熟悉),最终他们获得的军功,也将会平分到每个人身上,这样,有时候,计算他们中的...
分类:
编程语言 时间:
2015-11-10 22:26:25
阅读次数:
288
原题:http://acm.hdu.edu.cn/showproblem.php?pid=1556这道题是线段树的区间更新,单点查询问题,我在之前的博文里写出了线段树的具体的实现,以及怎样运用线段树解决RMQ问题,地址如下:http://www.cnblogs.com/zqy123/p/489919...
分类:
其他好文 时间:
2015-11-09 18:41:50
阅读次数:
230
取最大的K个, 用堆和RMQ来加速...-----------------------------------------------------------------#include#include#include#includeusing namespace std;typedef long ...
分类:
其他好文 时间:
2015-11-02 18:53:41
阅读次数:
259
题意:n个数两种操作,1、给出一组位置,使各位置的数循环移动,2、求给定区间的最小值。分析:单点更新,区间最值#include #include #include #include #include #include #include #include #include #include #incl...
分类:
其他好文 时间:
2015-10-26 00:04:03
阅读次数:
193