玲瓏OJ 1100 萌萌噠的第五題 dp

2021-07-27 20:43:43 字數 1950 閱讀 4371

1100 - 萌萌噠的第五題

time limit:10s memory limit:128mbyte

submissions:322solved:67

description

給出乙個長度為m的字串,請問有多少個長度為n的字串不存在子串等於給出的字串。為了簡化問題,我們規定所有字串只包含小寫英文本母。

輸入資料:

包含多組輸入資料(<=15),每組資料:

第一行包含兩個整數n和m(1

<= n,m <= 1000)

第二行包含乙個長度為m的字串,只含有小寫字母。

input

包含多組輸入資料(<=15),每組資料: 第一行包含兩個整數n和m(1

<= n,m <= 1000) 第二行包含乙個長度為m的字串,只含有小寫字母。

output

每組資料輸出一行,表示答案,這個答案可能會很大,所以只需要輸出答案對10^9+7求餘的結果。

sample input22

aa32aa

sample output

67517525

solution

「玲瓏杯」acm比賽 round #11

kmp求出給定字串的next陣列

通過next陣列求出c[

i][j

]=字元

串結尾能

匹配模式

串開頭i

個字母,

在字串

結尾加上

字母j,

還能匹配

多個個字

母 d[

i][j

]=∑26

k=0d

[i−1

][c[

i−1]

[k]]

∗(c[

i−1]

[k]==

j) d

[0][

0]=1

ans=∑m−

1i=0

d[n]

[i]

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

//#include

using

namespace

std;

#define ll long long

#define ull unsigned long long

#define pii pair

#define inf 1000000007

#define pll pair

#define pid pair

const

int inf=1e9+7;

const

int n = 1e3+5;

char p[n];

ll d[n][n];

int c[n][26];

ll dp(int n,int m)}}

ll ans=0;

for(int i=0;ireturn ans;

}int next[n];

void get_nextval(char *p, int *next)

else

}else

}}void initc(int m)

c[i][j]=k+1;}}

}int main()

return

0;}

玲瓏OJ 1097 萌萌噠的第二題 LIS

1097 萌萌噠的第二題 time limit 5s memory limit 128mbyte submissions 610solved 155 description 一條東西走向的河兩邊有都排著工廠,北邊有n間工廠a提供原材料,南邊有n間工廠b進行生產。現在需要在工廠a和工廠b之間建運輸橋以...

玲瓏杯 1099萌萌噠的第四題

給乙個數x,定義乙個函式f x 的結果是x的各位數字的平方和,若經過無數次遞迴操作之後若結果為1,也就是f f f f x 1,那麼這個數被認為是乙個特別的數。給出乙個數x請問這個數是否特別。input 包含多組測試資料 20 每組資料一行乙個整數x 1 x 1000000000 output 每組...

玲瓏杯 1101 萌萌噠的第六題(亂搞)

1101 萌萌噠的第六題 time limit 2s memory limit 128mbyte submissions 306solved 104 description 乙個凸多邊形的每個角都是rgb三種顏色的其中一種,保證相鄰的兩個點顏色都不一樣,請問是否能用多條不相交的對角線把多邊形切成多個...