RMQ
poursoul
这个作者很懒,什么都没留下…
展开
-
【POJ】3693 Maximum repetition substring 【后缀数组——求最长连续重复字串】
传送门:【POJ】3693 Maximum repetition substring题目分析:这个主要是看后缀数组的神论文了解的。。。。对于枚举的长度L,如果存在连续重复子串,则对于s[0],s[L],s[2*L],……,来说,一定存在相邻两个s[i*L],s[i*L+L]使得lcp(i*L,i*L+L)>=0,此时设M=lcp(i*L,i*L+L),很显然存在一个重复次数为M/L原创 2014-12-16 11:13:46 · 801 阅读 · 0 评论 -
【HDU】4691 Front compression 后缀数组+RMQ
传送门:【HDU】4691 Front compression题目分析:首先构造好后缀数组,然后对height数组进行rmq预处理,然后每次查询就是O(1)的了。代码如下:#include #include #include using namespace std ;typedef long long LL ;#define rep( i , a原创 2014-12-09 22:32:12 · 772 阅读 · 0 评论 -
【URAL】1297 Palindrome 【后缀数组+RMQ——求最长回文子串】
传送门:【URAL】1297 Palindrome题目分析:将s串倒过来接到原串的后面,中间用'$'隔开,然后我们构造后缀数组和height数组,接着我们RMQ预处理,接下来枚举串的每个点作为回文串的中心,分别以该点为奇回文串中心以及偶回文串中心求LCP,此时向左和向右的串的LCP即以这个点作为中心的回文串的扩展半径,求半径的话我们就对原串位置以及倒过来后的相应位置做LCP。原创 2014-12-11 22:19:44 · 1096 阅读 · 0 评论 -
【HDU】5906 Square Revolution【后缀数组+RMQ求LCP+并查集+扫描线+树状数组】【求以某个点为开始或者结尾的最短AA形式串的长度】
题目链接:Square Revolution题意:求串s有多少个子串满足不存在形式为AA的前缀或后缀(其中A是一个字符串)。本质是求以某个点为起点或者终点的最短AA串的长度。求出这东西以后就可以询问离线+扫描线树状数组搞搞了。求最短AA串怎么求呢,我们枚举A的长度k,然后看i和i+k的lcp(最长公共前缀)和lcs(最长公共后缀)是否加起来大于等于k,是的话用他们更新一下被影响的每个点的信息(即以他原创 2016-10-08 11:36:36 · 816 阅读 · 0 评论 -
【HDU】5436 Transmigration tree【树链剖分+dp+rmq】
题目链接:【HDU】5436 Transmigration tree#pragma comment(linker, "/STACK:16777216")#include <stdio.h>#include <string.h>#include <vector>#include <algorithm>using namespace std ;typedef long long LL ;#de原创 2016-11-01 11:30:19 · 646 阅读 · 0 评论