
字符串
Absoler
这个作者很懒,什么都没留下…
展开
-
HDU6230-Palindrome
题目连接题目大意:定义一种 one−and−halfone-and-halfone−and−half 回文串,其长度为 3n−23n-23n−2 ,满足 s[i]=s[2n−i]=s[2n−2+i],1≤i≤ns[i]=s[2n-i]=s[2n-2+i], 1 \leq i\leq ns[i]=s[2n−i]=s[2n−2+i],1≤i≤n 。输入一个长度为n (n≤5e5)(n\leq 5e5...原创 2019-11-19 21:25:36 · 130 阅读 · 0 评论 -
回文树模板
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=3e5+4;struct Palindromic_Tree{ int next[maxn][26]; int...原创 2019-10-22 00:08:35 · 110 阅读 · 0 评论 -
更高效的字符串匹配算法——shift-and
在接触这个算法之前,一直觉得kmp巧夺天工,利用next数组的递推,实现对于模式串任一子串最大相同前后缀的找寻,继而在匹配目标串的过程中,一旦遇到失配情况,可以令 匹配起始下标 进行合理范围内最大的跳跃,从而将匹配整体复杂度从O(nm)降为O(m+n)。a b c a b c ........a b c a b k 可从目标串第二个 a 处开始匹配shift-and算法与其思路基...原创 2018-07-18 22:19:18 · 1982 阅读 · 0 评论 -
字符串算法汇总
字符串哈希:讲解大意就是将字符串视为一个多位的数,用unsigned long long 保存,溢出可以视为对2^64取模。回文树:博客另一篇博客推荐配合OIWiki上的图食用每个节点代表当前前缀的最大回文串后缀,next指向的是代表[通过前后加上一个新字符能得到的新回文串]的节点,suffix指向的是加入新字符后,该回文串的最大的回文后缀。有两个根,最终节点数...原创 2019-08-02 20:56:10 · 373 阅读 · 0 评论 -
后缀数组模板
const int N=2e4+10;int n,sa[N],rnk[N],height[N];char s[N];//sa数组表示字典序为i的后缀是谁,rnk数组表示某个后缀的排名void buildSA(int m=128){ int cnt[N],rnk1[N],rnk2[N],tmpSA[N]; //cnt[i]用来记录rnk小于等于i的子串已经有多少个了,这样可...原创 2019-08-08 20:42:16 · 221 阅读 · 0 评论 -
Palindrome Mouse - 回文树 & dfs
这道题是牛客2019暑期多校第六场的C题,题目链接大意是,给出一个字符串,对于它所有的回文子串,若其中某个是另一个的子串,则视其为一对,求总对数。看到回文子串就想到了回文树。简单回顾一下,回文树每个节点代表以当前字符结尾的最长回文子串,next指向前后添上某个字符后更大的那个子串,fail(suffix)指向当前子串的最长回文后缀。初步的想法是,对于某个节点,它fail链上的所有节点以及反...原创 2019-08-14 19:14:19 · 168 阅读 · 0 评论