hdu 2459 (后缀数组+RMQ)
摘要:
题意:让你求一个串中连续重复次数最多的串(不重叠),如果重复的次数一样多的话就输出字典序小的那一串。分析:有一道比这个简单一些的题spoj 687,假设一个长度为l的子串重复出现两次,那么它必然会包含s[0]、s[l]、s[l*2]...之中的相邻的两个。不难看出,该重复子串必然会包含s[0..l]或s[l..l*2]或s[l*2..l*3]...。所以,我们可以枚举一个i,对于每个i*l的位置,利用后缀数组可以求出s[i*l..(i+1)*l]向后延伸的长度k。k/l+1即i*l..(i+1)*l这一段重复出现的次数。但还有一种情况。考虑以下的字符串:aababababab假设现在l=2,i 阅读全文
posted @ 2013-08-11 18:06 后端bug开发工程师 阅读(1149) 评论(0) 推荐(0)
浙公网安备 33010602011771号