HDU 3336 KMP+DP

原创 2012年03月22日 22:03:53

匹配用的KMP,另外+DP存储状态;

DP数组f[i]代表当前前缀可以匹配的次数。

f[i]=f[next[i]]+1;为next[i]--i的的前缀的数量。
计算总和即可。


#include<iostream>
using namespace std;

char t[222222];
int next[222222],f[222222]; 
int L;

void setNext()
{
     int j=0,k=-1;
     next[0]=-1;
     while( j<L )
     {
            if( k==-1||t[j]==t[k] )
                next[++j]=++k;
            else
                k=next[k]; 
     }
}
 
int main()
{
    int T;
    scanf( "%d",&T );
    while( T-- )
    {
           scanf( "%d",&L );
           scanf( "%s",&t );
           setNext();
           int sum=0;
           memset( f,0,sizeof(f) );
           for( int i=1;i<=L;i++ )
           {
                f[i]=(f[next[i]]+1)%10007;
                sum=(sum+f[i])%10007;
           }
           printf( "%d\n",sum );
    }
    return 0;
} 


版权声明:本文为博主原创文章,转载请写明出处。

相关文章推荐

hdu 3336 Count the string(KMP+dp)

Count the string Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)...

hdu 3336 Count the string dp+KMP(失配函数)

题意: 代码: #include #include #include #include #include #include #include #inc...

【hdu3336】——KMP&&dp

题目: Count the string Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java...
  • CFhM_R
  • CFhM_R
  • 2016年04月16日 22:39
  • 128

hdu3336 Count the string(kmp+dp)

题目:点击打开链接 题意:给定一字符串,求它所有的前缀出现的次数的和。 思路:利用递推的思想。=W=不太好想,kmp都是玄学。 后来发现这题可以直接从next数组入手,因为next数组表示的是子串中最...

HDU 3336 Count the string 后缀数组 或 (KMP + DP)

题目大意: 就是现在给出一个长度不超过20W的字符串S, 对于这个字符串求其所有前缀在串中出现次数的和, 结果对10007取模 大致思路: 很容易想到后缀数组, 找到sa[i] = 0的那个就是串...

Hdu-3336 Count the string(KMP + DP)

Count the string Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others...

HDU 3336 Count the string(KMP+DP)

给出一个字符串,输出每个前缀在原串中出现的次数总和。

Hduoj3336【dp+KMP】

/*Count the string Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other...

【HDU】3336 Count the string KMP

Count the string Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others...

hdu 3336 Count the string kmp

题意:求出前n个字符组成的字符串能被原串匹配次数之和 如 ababababab a=5 ab=5 aba=4 abab=4 ababa=3 ababab=3 abababa=2 abababab=2 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HDU 3336 KMP+DP
举报原因:
原因补充:

(最多只允许输入30个字)