牛客練習賽51(B題 子串查詢)

2021-09-26 23:05:41 字數 1310 閱讀 8154

題目描述

給出乙個長度為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...