zoukankan      html  css  js  c++  java
  • SAM板子

    function newnode(x:longint):longint;
    begin
      inc(cnt);dis[cnt]:=x;exit(cnt);
    end;
    
    procedure add(id:longint);
    var ch,i:char;p,np,q,nq,j:longint;
    begin
      ch:=s[id];np:=newnode(id);p:=last;last:=np;
      while(p>0)and(t[p].son[ch]=0)do
      begin
        t[p].son[ch]:=np;p:=t[p].fa;
      end;
      if p=0 then t[np].fa:=root else
      begin
        q:=t[p].son[ch];
        if dis[q]=dis[p]+1 then t[np].fa:=q else
        begin
          nq:=newnode(dis[p]+1);
          for i:='a' to 'z' do t[nq].son[i]:=t[q].son[i];
          t[nq].fa:=t[q].fa;
          t[q].fa:=nq;t[np].fa:=nq;
          while t[p].son[ch]=q do
          begin
            t[p].son[ch]:=nq;p:=t[p].fa;
          end;
        end;
      end;
    end;
    
    procedure build;
    var i,len:longint;
    begin
      readln(s);len:=length(s);
      cnt:=1;root:=1;last:=1;
      for i:=1 to len do add(i);
      for i:=1 to cnt do inc(sum[dis[i]]);
      for i:=1 to len do inc(sum[i],sum[i-1]);
      for i:=cnt downto 1 do
      begin
        tmp[sum[dis[i]]]:=i;dec(sum[dis[i]]);
      end;
    end;
  • 相关阅读:
    E
    C
    航空母舰-03
    航空母舰-02
    航空母舰-01
    新概念4-30
    html
    翁凯-编程学习方法
    机器学习Ng-02
    民法-钟秀勇-导学
  • 原文地址:https://www.cnblogs.com/oldjang/p/6525686.html
Copyright © 2011-2022 走看看