摘要:
基本C/C++、STL(vector、set、map、queue、string、algorithm)枚举、贪心、递归、分治、递推、模拟构造、位运算、常数优化数据结构队列、堆、栈、链表排序(插入、冒泡、快速、归并、堆、桶、基数)二分查找、散列表、并查集、哈夫曼树排序二叉树、左偏树、平衡树(Splay/... 阅读全文
摘要:
通道:题意:思路:代码:TAG: 阅读全文
摘要:
通道:http://codeforces.com/problemset/problem/452/E题意:给了三个串,问对于长度为l的串,满足(i1,i2,i3)(s1[i1..i1+l-1]==s2[i2...i2+l-1]==s3[i3+...i3+l-1])有多少组,输出长度为1-min(|s1... 阅读全文
摘要:
通道:http://www.lydsy.com/JudgeOnline/problem.php?id=2806题意:思路:代码:TAG: 阅读全文
摘要:
通道:http://codeforces.com/problemset/problem/271/D题意:一个字符串S,然后给出每一个字符是”好‘或”坏“,求S中包含不超过k个坏字符的不同子串的个数思路:对原串建立SAM,拓扑一下然后从后往前DP,dp[i][j]:到i节点坏字符为j个时的个数,转移为... 阅读全文
摘要:
通道:http://codeforces.com/problemset/problem/235/C题意:给一个字符串S,再给一个字符串T,设T的长度为len,问T的循环串在S中出现的次数思路:对母串建立SAM,然后把T * 2在SAM上匹配,维护一个匹配长度。然后记得看一下当前这个串是否属于点p,也... 阅读全文
摘要:
通道:http://codeforces.com/problemset/problem/127/D题意:求一个字符串S的最长子串,使得它同时是S的前缀,后缀和中缀思路:建立SAM,拓扑一下然后从前往后匹配,判断前缀和后缀相等只需要str[i]==str[n]&&r[j]==len就可以,问题在于怎么... 阅读全文
摘要:
通道:http://codeforces.com/problemset/problem/123/D题意:定义F(s,x)表示s中的子串的子串等于x的有多少个,求和,例如,F(babbabbababbab, babb) = 6. The list of pairs is as follows:(1, ... 阅读全文
摘要:
通道:http://poj.org/problem?id=1509题意:给你一个字符串的环,求从那个位置起字符串的字典序最小思路:将原串扩充一倍,建立SAM,然后去遍历最早到达长度为L的就可以了,代码:https://github.com/Mithril0rd/Rojo/blob/master/po... 阅读全文
摘要:
通道:http://acm.hdu.edu.cn/showproblem.php?pid=4622题意:给出一个串,Q次询问【l,r】区间内有多少个不同的子串思路:SAM模板题,我们知道每增加一个字符,在这个区间内就会增加val[i]-val[fa[i]]个不同的串,离线处理排序所有询问即可。代码:... 阅读全文
摘要:
通道:http://acm.hdu.edu.cn/showproblem.php?pid=4416题意:给一个字符串S和一系列字符串s1~sn,问在S中有多少个不同子串满足它不是s1~sn中任意一个字符串的子串思路:对母串SAM,然后对于s1~sn我们从上往下匹配,设match[i]表示n个子串和母... 阅读全文
摘要:
通道:http://acm.hdu.edu.cn/showproblem.php?pid=3518题意:求一个字符串中重复出现两次以上且不重叠的不同字串的个数。思路:建立SAM后,然后拓扑排序,我们知道,在后缀自动机中,每一个状态都代表了一类子串,(设一个状态为p)则它的长度范围是[p->fa->v... 阅读全文
摘要:
通道:http://www.spoj.com/problems/SUBLEX/题意:求长度为90000的字符串的字典序K小的子串思路:SAM后,拓扑一下path[i]表示到达i节点继续往下走能产生的子串,如果走到某个节点的path[i]+1>=k,这说明就在这条路径上,否则就是以其他字母k(k>i)... 阅读全文