PAM 三问
  • 板块学术版
  • 楼主Doqe
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/10/28 10:55
  • 上次更新2023/10/27 05:28:31
查看原帖
PAM 三问
220558
Doqe楼主2022/10/28 10:55
  1. 在什么时候回文自动机插入完后的 last 不等于 tot。

    或者换一种表达:

    void ins(int u,int n)
     {
         int cur=getfail(last,n);
       if(!tr[cur][u])
       {
           ++tt;
           len[tt]=len[cur]+2;
           fail[tt]=tr[getfail(fail[cur],n)][u];
             num[tt]=num[fail[tt]]+1; 
             tr[cur][u]=tt;
         }
         last=tr[cur][u];
     }
    

    什么时候 if 分支不会进入

  2. int gettrans(int x,int n)
    {
    	while(s[n-len[x]-1]!=s[n]||(len[x]+2<<1)>len[tt])x=fail[x];
    	return x;
    }
    

    初始的 x 为什么是 trans[cur] 是对的,fail[cur] 会TLE

  3. PAM时间复杂度证明。

2022/10/28 10:55
加载中...