摘要:
manacher魔改,hash+二分都好写,但是我魔改了个回文自动机就写自闭了orz 根本上来说只要把==改成!=即可,但是这样一来很多停止条件就没了,需要很多特判手动刹车,最后统计一下size即可 cpp include include include using namespace std; c 阅读全文
posted @ 2018-11-24 16:47
lokiii
阅读(151)
评论(0)
推荐(0)
摘要:
回文自动机板子 或者是SAM+manacher+倍增,就是manacher求本质不同回文串(让f++的串),然后在SAM倍增查询对应点出现次数 cpp include include include using namespace std; const int N=300005; int n,ch[ 阅读全文
posted @ 2018-11-24 15:32
lokiii
阅读(154)
评论(0)
推荐(0)
摘要:
因为我很愚蠢所以用了很愚蠢的O(nlogn)的manacher+线段树做法 就是开两个线段树mn和mx分别表示左端点在i的最长回文子串和右端点在i的最长回文子串 用manacher求出每个点的最长回文子串,然后对于一组(i,f[i])(这里的i是加完 之后的串),我们考虑对原串贡献是对于中点右边一段 阅读全文
posted @ 2018-11-24 14:21
lokiii
阅读(215)
评论(0)
推荐(0)
摘要:
建个SAM,符合要求的串显然是|right|==1的节点多代表的串,设si[i]为right集合大小,p[i]为right最大的r点,这些都可以建出SAM后再parent树上求得 然后对弈si[i]==1的点,考虑它所代表的串是s(p[i] dis[i]+1,p[i])~s(p[i] dis[fa[ 阅读全文
posted @ 2018-11-24 09:24
lokiii
阅读(194)
评论(0)
推荐(0)

浙公网安备 33010602011771号