- 博客(6)
- 资源 (2)
- 收藏
- 关注
转载 回文树笔记(转自quack_quack)
1.回文树的next[charset]指针: b->aba 那么就这样表示:b.next[a]=aba 当然树里面肯定不能存字符串,于是就直接用下标标号代替了 2.回文树的fail指针: 跟ac自动机类似,fail指针指向当前节点的最大回文后缀 没有就指向根 3.回文树的根 有2个根,一个单根就是往下连回文串长度为奇数的节点,本身长度为-1 还有个双根就是往下连回
2015-12-24 22:44:51 1187
原创 COCI2015/2016 CONTEST#4 简易题解
T1:YODA 题意:给出两个数,要求把两个数对撞,每一个十进制位上的大的留在原数,如果相同,两个都留在原数,最后输出两个对撞后的原数。 思路:直接模拟即可,两个数每一次都/10%10,比较是否合法。 T2:HAN 题意: 思路: T3:DEATHSTAR 题意:给你一个矩阵 第(i,j)表示Ai&Aj (&表示按位与(bitwise and))求数列{An} 思路:想想或运算,你知
2015-12-23 21:15:23 1831
原创 HDU3065 病毒侵袭持续中(AC自动机或后缀数组)
传送门 思路:将所有特征码建成一个AC自动机,然后查找就行了,找的时候直接找完也不会超时,因为模式串太短了(不超过50个字符),再长一点可以考虑树DP。 如果用后缀数组的话,我觉得可以O(NlogM)O(NlogM)(N为串的总长度,M为模式串最长长度)来Build。然后在Height数组里二分答案O(TlogM)O(TlogM)(T为模式串个数,一次lower_bound,一次upper_bo
2015-12-23 20:20:13 505
原创 HDU2896 病毒侵袭(AC自动机)
传送门 这一题实际上就是多模式,多文本的匹配,对于这道题来说,用AC自动机就可以解决,题解同前一道题。 代码:#include<stdio.h>#include<cstring>#include<algorithm>#include<vector>using namespace std;#define MAXN 10005#define MAXC 128#define MAXM 5
2015-12-21 23:00:22 394
原创 HDU 2222 Keywords Search(AC自动机)
传送门 AC自动机入门好题。作为模板的检测题吧。 AC自动机构造方法: 插入模式串,建成Trie,如果对于某个点x的next[c]不存在的话,就把next[c]指向fail[x]的next[c] 在Trie上加入失配边,就成功啦。 查找的时候一直按着next信息走到下一个节点。 代码:#include<stdio.h>#include<cstring>#define MAXN 100
2015-12-21 22:52:35 445
原创 最长回文子串的查找
刚刚学习了manacher算法,感觉还是很优秀的,思路也很简单。具体介绍可以去http://www.felix021.com/blog/read.php?2040看。时间复杂度为O(n)O(n) 然后后缀数组的做法,在罗穗骞大神的论文里也写得很清楚了,即把原串反着放回到前一个的后面(中间用一个特殊符号分割)(同样的,用特殊符号处理成长度为奇数的串)。然后再依次询问suffix(i) 与 suffi
2015-12-19 14:34:51 640
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人