NC25138 子串查詢 基礎二分 子串行

2021-10-10 06:51:34 字數 1349 閱讀 5925

題目描述

給出乙個長度為n的字串s和q個查詢。對於每乙個查詢,會輸入乙個字串t,你需要判斷這個字串t是不是s的子串。子串的定義就是存在任意下標a第一行兩個數n,q。1<=n,q<=1e5。

第二行乙個長度為n的字串s,所有字元都為小寫拉丁字元。

接下來q行每行乙個字串t。1<=|t|<=50。

輸出描述:

對於每個查詢,如果t是s的字串,輸出」yes」,否則輸出」no」。每個答案佔一行。

示例1輸入

複製8 4

ababcbaa

abac

accb

aaaa

abcba

輸出複製

yesno

yesyes

題目:給定乙個文字串text,和多個查詢串str[i],問str[i]是否是text中的乙個子串行

本題的字串其實是子串行觀察到只有小寫字元,考慮用vectorg[char]有序儲存字母出現的下標

例如abcdabcdaaabca,則g['a'] =

對每個詢問串的字母ch查詢是否在g['ch']中有大於前乙個字元的位置

int n, m, q, k;

char buf[maxn]

, s[64]

;vector<

int> g[

128]

;int

check

(vector<

int>

& vec,

int key)

signed

main()

;// printf("%d\n", upper_bound(vec.begin(), vec.end(), 2)-vec.begin());

scanf

("%d %d "

,&n,

&q);

scanf

("%s "

, buf)

;for

(int i=

0; buf[i]

; i++

) g[buf[i]].

push_back

(i);

while

(q--)}

printf

("%s\n"

, ok ?

"yes"

:"no");

}

子串查詢 二分

給出乙個長度為n的字串s和q個查詢。對於每乙個查詢,會輸入乙個字串t,你需要判斷這個字串t是不是s的子串。子串的定義就是存在任意下標a第二行乙個長度為n的字串s,所有字元都為小寫拉丁字元。接下來q行每行乙個字串t。1 t 50。輸出描述 對於每個查詢,如果t是s的字串,輸出 yes 否則輸出 no ...

NC105 二分查詢

請實現有重複數字的有序陣列的二分查詢。輸出在陣列中第乙個大於等於查詢值的位置,如果陣列中不存在這樣的數,則輸出陣列長度加一。示例1複製 5,4,1,2,4,4,5 複製 3題解 注意結束條件是left right,應為mid計算是下取整,如果用 left right 的話有可能無法訪問到right ...

NC105 二分查詢

請實現有重複數字的有序陣列的二分查詢。輸出在陣列中第乙個大於等於查詢值的位置,如果陣列中不存在這樣的數,則輸出陣列長度加一。示例15,4,1,2,4,4,5 3 輸出位置從1開始計算 二分查詢 param n int整型 陣列長度 param v int整型 查詢值 param a int整型一維陣...