网站搭建论文有哪些好的网站制作公司
web/
2025/9/30 7:13:32/
文章来源:
网站搭建论文,有哪些好的网站制作公司,上海网站建设报价,网络广告的特点有哪些?所谓回文自动机#xff0c;就是关于回文的自动机。 #xff08;逃#xff09;
前言
小清新自动机。 经历过SAM的大风大浪#xff0c;这个相比而言好理解多了#xff0c;感觉也许应该先学这个再学SAM…
解析
和trie、AC自动机、SAM等类似的#xff0c;PAM的每个结点表… 所谓回文自动机就是关于回文的自动机。 逃
前言
小清新自动机。 经历过SAM的大风大浪这个相比而言好理解多了感觉也许应该先学这个再学SAM…
解析
和trie、AC自动机、SAM等类似的PAM的每个结点表示一个回文状态每条边对应一条对应字符的转移边。定义每个结点的 fafafa 指针指向其最长的回文后缀。 和其他自动机有些不同的是每条转移边表示的是在父亲的状态首尾各添加一个字符这也是源于回文本身的性质奇根除外所以每个结点的对应最长后缀长度为父亲长度 2。
先给出算法流程 考虑和SAM一样用增量法构造假设目前已经建出了 [1,i−1][1,i-1][1,i−1] 的PAM考虑加入 sis_isi。 设 si−1s_{i-1}si−1 对应的结点位置为 lstlstlst那么我们就不断的从 lstlstlst 往上跳 fafafa直到找到满足 si−lenp−1sis_{i-len_{p}-1}s_isi−lenp−1si 的 ppp 结点。 此时如果 ppp 结点存在 sis_isi 对应的转移令 lst←transp,silst\gets trans_{p,s_i}lst←transp,si 即可。 否则新建一个结点 curcurcur令 lencur←lenp2,transp,si←curlen_{cur}\gets len_{p}2,trans_{p,s_i}\gets curlencur←lenp2,transp,si←cur接着再暴力往上跳 fafafa 寻找 facurfa_{cur}facur 即可。
回文串分为奇回文串和偶回文串两种而且由于每次长度2奇偶性不变这两种串在PAM上无法互相转化。因此我们需要分别建一棵奇树和偶树对应各自的奇根和偶根分别标号为 1,01,01,0。 细节处理上需要令 len1−1,len00,trans1/0,a...z0,fa10,fa01len_{1}-1,len_00,trans_{1/0,a...z}0,fa_{1}0,fa_01len1−1,len00,trans1/0,a...z0,fa10,fa01。
代码
int tot1,lst1;
struct node{int fa,len,num,tr[26];
}st[N];
void init(){st[0].len0;st[0].fa1;st[1].len-1;st[1].fa0;
}
int find(int x,int i){//printf( find:x%d i%d ,x,i);while(s[i-st[x].len-1]!s[i]){xst[x].fa;} //printf(res%d\n,x);return x;
}
void ins(int c,int id){c-a;lstfind(lst,id);if(!st[lst].tr[c]){int curtot;st[cur].fast[find(st[lst].fa,id)].tr[c];st[cur].lenst[lst].len2;st[lst].tr[c]cur;st[cur].numst[st[cur].fa].num1;}lstst[lst].tr[c];return;
}Thanks for reading!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/84325.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!