51Nod1277 字串中的最大值

2021-07-22 21:23:54 字數 1121 閱讀 6098

乙個字串的字首是指包含該字元第乙個字母的連續子串,例如:abcd的所有字首為a, ab, abc, abcd。

給出乙個字串s,求其所有字首中,字元長度與出現次數的乘積的最大值。

例如:s = 「abababa」 所有的字首如下:

「a」, 長度與出現次數的乘積 1 * 4 = 4,

「ab」,長度與出現次數的乘積 2 * 3 = 6,

「aba」, 長度與出現次數的乘積 3 * 3 = 9,

「abab」, 長度與出現次數的乘積 4 * 2 = 8,

「ababa」, 長度與出現次數的乘積 5 * 2 = 10,

「ababab」, 長度與出現次數的乘積 6 * 1 = 6,

「abababa」, 長度與出現次數的乘積 7 * 1 = 7.

其中」ababa」出現了2次,二者的乘積為10,是所有字首中最大的。

適當的練練以前的演算法。

很明顯是字尾自動機,john推薦的,o(∩_∩)o~。

字尾自動機經典問題。

#include

#include

#include

#include

#include

#define fo(i,a,b) for(i=a;i<=b;i++)

#define fod(i,a,b) for(i=a;i>=b;i--)

using

namespace

std;

typedef

long

long ll;

const

int maxn=200007;

int i,j,k,l,n,m,num,last;

int p,q,np,nq,x;

int a[maxn],b[maxn],c[maxn];

struct nodet[maxn*2];

ll ans;

char s[maxn];

void extend(int c)

}last=np;

}int main()

x=1;

fo(i,1,n)

printf("%lld\n",ans);

}

51nod 1277 字串中的最大值

a 長度與出現次數的乘積 1 4 4,ab 長度與出現次數的乘積 2 3 6,aba 長度與出現次數的乘積 3 3 9,abab 長度與出現次數的乘積 4 2 8,ababa 長度與出現次數的乘積 5 2 10,ababab 長度與出現次數的乘積 6 1 6,abababa 長度與出現次數的乘積 7...

51nod 1277 字串中的最大值

51nod 1277 字串中的最大值 對於單串,考慮多串的fail樹,發現next陣列的關係形成樹形結構 建出next樹,對於每乙個字首,他出現的次數就是他子樹的大小 include include includeinline int read const int maxn 100007 struc...

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

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