我們定義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同所有字...