kmp 51nod 1277 字串中的最大值

2021-07-28 12:15:56 字數 490 閱讀 7946

首先求字首,那麼你要想到kmp;

我們算出next陣列(即p)後,可以理解為包含關係;

即字首i包含字首p[i];

我們搞乙個sum[i]表示字首長度為i的字首出現過幾次;

顯然初始值sum[i]=1;

我們倒著推,邊推邊算答案,就好了;

注意sum會爆int;

#include

#include

#include

#define ll long long

using

namespace

std;

string s;

ll p[100005],sum[100005];

ll n,m;

ll ans;

void make(string s)

}int main()

printf("%lld",ans);

}

51nod1277 字串中的最大值(KMP)

1277 字串中的最大值 codility 基準時間限制 1 秒 空間限制 131072 kb 分值 80 難度 5級演算法題 乙個字串的字首是指包含該字元第乙個字母的連續子串,例如 abcd的所有字首為a,ab,abc,abcd。給出乙個字串s,求其所有字首中,字元長度與出現次數的乘積的最大值。例...

51 nod 1277 字串中的最大值 KMP

1277 字串中的最大值 codility 基準時間限制 1 秒 空間限制 131072 kb 分值 80 難度 5級演算法題 乙個字串的字首是指包含該字元第乙個字母的連續子串,例如 abcd的所有字首為a,ab,abc,abcd。給出乙個字串s,求其所有字首中,字元長度與出現次數的乘積的最大值。例...

51nod 1277 字串中的最大值 KMP

1277 字串中的最大值 codility 基準時間限制 1 秒 空間限制 131072 kb 分值 80 難度 5級演算法題 乙個字串的字首是指包含該字元第乙個字母的連續子串,例如 abcd的所有字首為a,ab,abc,abcd。給出乙個字串s,求其所有字首中,字元長度與出現次數的乘積的最大值。例...