首先求字首,那麼你要想到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,求其所有字首中,字元長度與出現次數的乘積的最大值。例...