51nod 1304 字串的相似度

2021-07-25 04:58:52 字數 741 閱讀 2554

我們定義2個字串的相似度等於兩個串的相同字首的長度。例如 「abc」 同 「abd」 的相似度為2,」aaa」 同 「aaab」 的相似度為3。

給出乙個字串s,計算s同他所有字尾的相似度之和。例如:s = 「ababaa」,所有字尾為:

ababaa 6

babaa 0

abaa 3

baa 0

aa 1

a 1s同所有字尾的相似度的和 = 6 + 0 + 3 + 0 + 1 + 1 = 11

做一遍擴充套件kmp然後把next都加起來。

#include

#include

#include

#define fo(i,a,b) for(i=a;i<=b;i++)

using namespace std;

typedef long long ll;

const int maxn=1000000+10;

intnext[maxn];

char s[maxn];

int i,j,k,l,t,n,m;

ll ans;

int main()

else

if (i+next[i]>j+next[j]) j=i;

}fo(i,2,n) ans+=(ll)next[i];

ans+=(ll)n;

printf("%lld\n",ans);

}

51nod 1304 字串的相似度

我們定義2個字串的相似度等於兩個串的相同字首的長度。例如 abc 同 abd 的相似度為2,aaa 同 aaab 的相似度為3。給出乙個字串s,計算s同他所有字尾的相似度之和。例如 s ababaa 所有字尾為 ababaa 6 babaa 0 abaa 3 baa 0 aa 1 a 1 s同所有字...

51nod 1304 字串的相似度 exkmp

我們定義2個字串的相似度等於兩個串的相同字首的長度。例如 abc 同 abd 的相似度為2,aaa 同 aaab 的相似度為3。給出乙個字串s,計算s同他所有字尾的相似度之和。例如 s ababaa 所有字尾為 ababaa 6 babaa 0 abaa 3 baa 0 aa 1 a 1s同所有字尾...

擴充套件KMP學習 51nod1304 字串的相似度

我們定義2個字串的相似度等於兩個串的相同字首的長度。例如 abc 同 abd 的相似度為2,aaa 同 aaab 的相似度為3。給出乙個字串s,計算s同他所有字尾的相似度之和。例如 s ababaa 所有字尾為 ababaa 6 babaa 0 abaa 3 baa 0 aa 1 a 1 s同所有字...