• HDU 3336 Count the string (KMP+DP)


    题目大意:给你一个字符串,求所有前缀在原串的出现次数之和

    KMP的next指针相当于可以转移的位置呀

    把next指针当成边跑拓扑就行啦!

     1 #include <cstdio>
     2 #include <algorithm>
     3 #include <cstring>
     4 #define N 200100
     5 #define mod 10007
     6 #define ui unsigned int
     7 using namespace std;
     8 
     9 int T,n,m,len;
    10 int nxt[N];
    11 ui f[N];
    12 char s[N];
    13 void clr()
    14 {
    15     memset(f,0,sizeof(f));
    16     memset(s,0,sizeof(s));
    17     memset(nxt,0,sizeof(nxt));
    18 }
    19 void get_kmp()
    20 {
    21     int i=0,j=-1;
    22     nxt[0]=-1;
    23     while(i<=len)
    24     {
    25         if(j==-1||s[i]==s[j])
    26         {
    27             i++;
    28             j++;
    29             nxt[i]=j;
    30         }else{
    31             j=nxt[j];
    32         }
    33     }
    34 }
    35 ui solve()
    36 {
    37     ui ans=0;
    38     for(int i=1;i<=len;i++)
    39     {
    40         if(nxt[i]>=0) f[i]=f[nxt[i]]+1;
    41         else f[i]=1;
    42         f[i]%=mod;
    43         ans+=f[i];
    44         ans%=mod;
    45     }
    46     return ans;
    47 }
    48 
    49 int main()
    50 {
    51     scanf("%d",&T);
    52     while(T--)
    53     {
    54         scanf("%d",&n);
    55         clr();
    56         scanf("%s",s);
    57         len=strlen(s);
    58         get_kmp();
    59         printf("%u\n",solve());
    60     }
    61     return 0;
    62 }
    63 
    64     
    65     
  • 相关阅读:
    磁盘管理RAID
    06磁盘
    7.30
    作业
    chapter02作业
    2019-07-23
    Tomcat三种运行模式(BIO, NIO, APR)
    Tomcat监控管理
    tomcat中web站点的部署
    Tomcat访问控制
  • 原文地址:https://www.cnblogs.com/guapisolo/p/9696938.html
Copyright © 2020-2023  润新知