随笔分类 - 后缀数组
摘要:这题过得很艰辛啊。最早在去年网络赛时就见到这题了,当时是不会。前段时间好好学了一下后缀数组,昨天再来看这题,就知道显然是后缀数组的应用了。我知道解这道题肯定是类似于用后缀数组求字符串所有不同子串个数的思路。但一开始想走捷径,想法是先把所有的b连起来,再连上a,并通过在a后面加上一些特定字符的方法,使在sa中a的子串都排在b的后面,这样只要倒着统计一遍就行了。代码打完后才想明白这是完全行不通的。正确思路只能是分两次做,一次是只把所有的b连起来,求出所有不同子串数sumb,第二次是把a也连上,求出所有不同子串数sumab,最后结果就是sumab - sumb。具体实现过程也有好多需要注意的,比如,
阅读全文
摘要:赤裸裸的后缀数组的应用啊。直接将两个串连起来(中间加一个比小写字母小的字符,我学大家,用的‘#’),求出height数组,找最大值即可(得排除两个后缀在同一端的情况)/* * hdu1403/win.cpp * Created on: 2013-5-20 * Author : ben */#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <ctime>#include <iostream>#include <al
阅读全文
浙公网安备 33010602011771号