題目描述
給出乙個長度為n的字串s和q個查詢。對於每乙個查詢,會輸入乙個字串t,你需要判斷這個字串t是不是s的子串。子串的定義就是存在任意下標a輸入描述:
第一行兩個數n,q。1<=n,q<=1e5。
第二行乙個長度為n的字串s,所有字元都為小寫拉丁字元。
接下來q行每行乙個字串t。1<=|t|<=50。
輸出描述:
對於每個查詢,如果t是s的字串,輸出」yes」,否則輸出」no」。每個答案佔一行。
輸入:
8 4輸出:ababcbaa
abac
accb
aaaa
abcba
yes官方題解:noyes
yes
我的**:
官方**:#include
using
namespace std;
queue<
int>qu[30]
;int nex[
100010][
30];int
main()
for(
int i=
0;i<
26;i++
)for
(int i=
0;ilength()
;i++)}
while
(q--)}
if(ok==
1) cout<<
"no"
"yes"
<}return0;
}
#include
using
namespace std;
int n,k,nex[
100005][
26];char t[55]
,s[100005];
queue<
int>q[26]
;int
main()
for(
int i=
1;i<=n;i++)}
while
(k--)}
printf
(flag?
"yes\n"
:"no\n");
}}
牛客練習賽51 B 子串查詢 (序列自動機)
大致題意 思路對於字元子串行匹配常用如下這種套路。用乙個next i j 陣列維護,在 第 j 個字母及其以後的第乙個字母 i 的位置。然後就可以在這個字串行上跳了,如果跳到匹配串結束也沒出現 1,那就匹配成功。預處理複雜度 o 26xn 匹配複雜度等於所有匹配串長度。貼一下序列自動機板子,注意每次...
牛客練習賽51
theme 給定n與m,要求你用正整數填充n個元素,使得這n個元素的和 m,定義喜愛度為i的個數使得2 i n且a i a i 1 1。1 n 1e5,1 m 1e9 solution 構造題。考慮列舉分成幾個段i,若某段的長度為len,則該段的數為1 len,可知喜愛度應為n i,所以我們的目標是...
牛客練習賽36B題
時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld rabbit大學畢業後找到了乙份實習工作,如果實習通過她就轉正了。實習期共有n天,其中有幾天公司集體放假,rabbit不用上班,剩下時間她可以選擇工作或者休息。rabb...