牛客15870 好位置 KMP 暴力迴圈

2021-10-07 18:48:10 字數 1212 閱讀 4147

題目連線:牛客15870 好位置 kmp/迴圈 傳送門

給出兩個串s和x

定義s中的某一位i為好的位置,當且僅當存在s的子串行

定義s中的某一位i為好的位置,當且僅當存在s的子串行 滿足y=x且存在j使得i=kj成立。問s中是否所有的位置都是好的位置。

一行兩個字串s,x,這兩個串均由小寫字母構成。 1 <= |s|, |x| <= 200000

yes表示是。

no表示不是。

兩個串s和x,就是s中的任意乙個字元的左右連續字元都能和x匹配,匹配成功yes,不成功no。

方法1kmp匹配並記錄匹配成功的位置,

通過匹配成功的次數和字串y的長度可計算出匹配成功的長度總和,若總和小於字串x則no

若匹配成功的位置差大於字串y的長度,則no

#pragma gcc optimize(2)

#include

using

namespace std;

const

int max=

1e6+7;

int nt[max]

;vector<

int>p;

void

kmp_next

(string str,

int next)

else j=next[j];}

}int

kmp(string s,string str,

int next)

else

j=next[j];if

(j==l2)}}

intmain()

}if(f)cout<<

"no"

;else cout<<

"yes"

;return0;

}

方法2

因為符合條件的字串x都是由字串y組成,故可迴圈暴力匹配

#pragma gcc optimize(2)

#include

using

namespace std;

intmain()

}if(f)cout<<

"no"

;else cout<<

"yes"

;return0;

}

牛客Game with numbers(暴力)

時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 給定大小為nn的集合ss 乙個數xx被稱為合法的,當且僅當x sx s或者xx存在大於11的真因數,且這些真因數均是合法的 求有多少個數xx滿足2 x m2 leq...

牛客 Barn Echoes (擴充套件KMP)

給出兩個字串,求乙個字串的字首與另乙個字串的字尾最長重疊長度 採用擴充套件kmp可以輕鬆解決此題 include include include include using namespace std string str1,str2,s1,s2 設從i位置開始的s的字尾串為s0i void z f...

牛客剪繩子(暴力列舉)

首先假設繩子為 2 那麼最大乘積為 1 2 繩子為 3 乘積最大 1 3 當繩子長為4開始發現規律 4 2 2 5 2 3 6 3 3 7 2 2 3 8 2 3 3 9 3 3 10 2 2 3 3 11 2 3 3 3 12 3 3 3 3 以此類推我們可以看出 最大值都是有2和3組成的,那怎麼...