kmp hdu 3336

原创 2013年12月03日 18:25:43
#include <iostream>
#include <cstring>
#include <cstdio>

using namespace std;

const int MAXN = 200010;

int next[MAXN];

void Get_Next(char* str, int n)
{
    int i = 0, j = -1;
    next[0] = -1;
    while(i < n)
    {
        if(j == -1 || str[i] == str[j])
        {
            ++i;
            ++j;
            next[i] = j;
        }
        else
            j = next[j];
    }
}


int main()
{
    int T, i;
    cin>>T;
    char str[MAXN];
    while(T--)
    {
        int ans = 0;
        int n;
        cin>>n>>str;
        Get_Next(str, n);
        ans = next[n] + n;
        for(i = 0; i < n; ++i)
            if(next[i] > 0 && next[i] + 1 != next[i+1])
                ans += next[i];
        cout<<ans%10007<<endl;
    }
    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 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 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...

【KMP】 hdu3336 Count the string

Count the string http://acm.hdu.edu.cn/showproblem.php?pid=3336 Problem Description It ...

hdu3336 Count the string(kmp+dp)

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

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

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

hdu3336解读KMP算法的next数组

贴代码不是目的,讲解算法才是关键!!。解题的思路是使用了 KMP 算法,然而把并不是完整的KMP算法。只用到了它的next数组的求法。然而这正是KMP算法本身的关键所在。这里关键在于讲解next数组的...

hdu3336Count the string(KMP的next[]数组的应用+KMP模板)

Countthe string TimeLimit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K(Java/Other) Tot...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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