摘要:
又一次把lct写炸了,硬着头皮终于改对了 阅读全文
摘要:
代码参考:http://blog.csdn.net/qq_33229466/article/details/79140428 阅读全文
摘要:
学习地址:http://blog.csdn.net/lych_cys/article/details/51512278 阅读全文
摘要:
把边的编号看成边权,维护每个状态对应的最大生成树,得到一个数组a[i],表示第i条边在这个过程中替换的是那条边,询问时看一下a[l,r]内啊有多少个小于l的算一下答案就好;代码参考:http://blog.csdn.net/thy_asdf/article/details/50518526 阅读全文
摘要:
代码参考:http://blog.csdn.net/sdfzyhx/article/details/74359927 阅读全文
摘要:
用常用的套路,排序之后从大到小插入height,用并查集维护即可。 阅读全文
摘要:
学习了回文树,地址:http://blog.csdn.net/u013368721/article/details/42100363; 这个题就是正这反着加一遍就好,一开始我想的是枚举每个位置,然后一直按fail跳,再接上跳完的位置的len,后来想了不行,一个很长的全是a的串就可以卡成n^2。 阅读全文
摘要:
二分答案,(具体可见http://blog.csdn.net/neither_nor/article/details/51669114),然后就是判定问题,sa和sam都可以做,用sam写了一下,先用sam建后缀树,然后用主席树维护right集合就好了,每次判断把对应节点倍增到深度为mid的点,然后 阅读全文
摘要:
因为题目中树的特殊性暴力dfs建sam就好了。然后sam有一个有意思的性质是一个点代表的子串个数等于mx[i]-mx[fail[i]],至于为什么,我不会严谨的证明,但想想还是可以的,就是当前串的所有后缀减去前面已经表示过的后缀吗。其实这个个数也可以一个dp跑出来的,只不过这种方法更卓越。 阅读全文
摘要:
后缀自动机还是只会打板子,已经知道它是个什么东西了,但还是和它的构造联系不起来。。先背板子吧。 后缀自动机有一个很好的特性就是可以涵盖所有不重复的子串,我们利用这一点在它上面dp就行了; 代码参考:http://blog.csdn.net/fuxey/article/details/51050474 阅读全文