51nod 1304 字串的相似度 exkmp

2021-08-18 02:54:11 字數 770 閱讀 7997

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