我們定義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
輸入乙個字串s(1 <= l <= 1000000),l為字串s的長度,且s由a-z的小寫字母組成。
就是乙個簡單的exkmp,把extend陣列累加上就好了
如果你一定要字尾自動機跳lca,或者字尾陣列rmq處理我也沒有辦法
#include
#define ll long long
using
namespace
std;
const ll n = 1000010;
char ss[n]; ll extend[n];
int main()
ll p=2; ll mx = p+extend[2]-1;
ll ans=0; for(ll i=3;i<=len;i++)
ans+=extend[i];
} return
printf("%lld\n",ans+extend[2]+extend[1]),0;
}
51nod 1304 字串的相似度
我們定義2個字串的相似度等於兩個串的相同字首的長度。例如 abc 同 abd 的相似度為2,aaa 同 aaab 的相似度為3。給出乙個字串s,計算s同他所有字尾的相似度之和。例如 s ababaa 所有字尾為 ababaa 6 babaa 0 abaa 3 baa 0 aa 1 a 1s同所有字尾...
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同所有字...
擴充套件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同所有字...