字符串总结

今天听dy大神讲字符串
一些知识点:
1.border:称一个串的border为满足[i+k-1,j][i,j-k+1]的k。
2.period:对于一个\(1<=p<=|S|\),若满足\(\forall i\in [1,|S|-p],S[i]=S[i+p]\),则称p为S的一个period。
3.border和period的关系:x是S的border则|S|-x是S的period。
4.弱周期定理:对于一个字符串的周期x,y,若x+y<=|S|,那么gcd(x,y)也是S的周期。
5.本原平方串的个数是\(nlogn\)级别的
6.后缀树:一开始讲了些,点数优化在于可知叶子最多只有n个,所以分叉很少,把只有一个出边的压成字符串,类似虚树。
7.brouvka算法:听说是很古老的生成树算法,每次找到点集向外连接的最大/小边加入生成树,然后合并成为一个点集继续处理,每次大小至少翻倍,复杂度\(nlogn\)。这样做不用预先计算代价。
8.对EXSAM上的所有前缀节点暴力不重复跳fail更新信息,复杂度是\(n\sqrt n\)。单独考虑每种字符的贡献计算复杂度。

例题:
A.求所有子串的最大border和
数据随机,border长度的期望是log的,所以可以暴力枚举T,看T作为多少串的border
但是会算重,考虑容斥

看一晚上回放,有很多知识点也是我陌生的,花了很长时间,总结也没写完,先咕吧。。。

posted @ 2020-02-10 22:59  hzoi_yzh  阅读(277)  评论(0编辑  收藏  举报