序列自動機 (牛客)月月查華華的手機

2021-09-25 06:47:34 字數 1583 閱讀 9936

時間限制:c/c++ 2秒,其他語言4秒

空間限制:c/c++ 262144k,其他語言524288k

64bit io format: %lld

題目描述

月月和華華一起去吃飯了。期間華華有事出去了一會兒,沒有帶手機。月月出於人類最單純的好奇心,開啟了華華的手機。哇,她看到了一片的qq推薦好友,似乎華華還沒有瀏覽過。月月頓時醋意大發,出於對好朋友的關心,為了避免華華浪費太多時間和其他網友聊天,她要刪掉一些推薦好友。但是為了不讓華華發現,產生猜疑,破壞了他們的友情,月月決定只刪華華有可能搭訕的推薦好友。

月月熟知華華搭訕的規則。華華想與某個小姐姐搭訕,當且僅當小姐姐的暱稱是他的暱稱的子串行。為了方便,華華和小姐姐的暱稱只由小寫字母構成。為了更加方便,保證小姐姐的暱稱長度不會比華華的長。

現在月月要快速的判斷出哪些推薦好友要刪掉,因為華華快回來了,時間緊迫,月月有點手忙腳亂,所以你趕緊寫個程式幫幫她吧!

輸入描述:

第一行輸入乙個字串a表示華華的暱稱。

第二行輸入乙個正整數n表示華華的推薦好友的個數。

接下來n行,每行輸入乙個字串bi

表示某個推薦好友的暱稱。

輸出描述:

輸出n行,對於第i個推薦好友,如果華華可能向她搭訕,輸出yes,否則輸出no。

注意大寫,同時也要注意輸出效率對演算法效率的影響。

示例1輸入

noiauwfaurainairtqltqlmomomo

8rain

airtql

nttxiaobai

oiiiooo

orzcnzcnznb

ooooo

輸出yes

yesyes

yesno

yesno

no備註:

1≤|a|≤106

,1≤n≤106,1≤∑ni=1bi≤106

題意:給出乙個字串s1,再給出n個別的字串,判斷後給出的n個字串是不是s1的子串行。

ac**:

#include

#define endl '\n'

using namespace std;

typedef

long

long ll;

int n,m;

string s1,s2;

vector<

int> num[30]

;inttn(

char ch)

intmain()

while

(n--

)int zzz=

upper_bound

(num[z]

.begin()

,num[z]

.end()

,fir)

-num[z]

.begin()

;if(num[z]

[zzz]

>fir)

else flag=0;

if(!flag)}if

(flag) cout<<

"yes"

"no"

<}return0;

}

月月查華華的手機(序列自動機)

時間限制 c c 2秒,其他語言4秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 月月和華華一起去吃飯了。期間華華有事出去了一會兒,沒有帶手機。月月出於人類最單純的好奇心,開啟了華華的手機。哇,她看到了一片的qq推薦好友,似乎華華還沒有瀏覽過。月...

牛客 月月查華華手機(列舉優化)

題目分析 1.這個題目如果直接暴力那麼時間複雜度太大,那麼我們可以用優化方法,直接跳轉到後面的字元一一比較,只要有乙個不符合,那麼就return 0 2.我們開兩個陣列,用last陣列不斷地更新a字串每個位置的字母,再把它賦給二維陣列nec,我們用nec陣列來記錄每乙個字母後面字母出現的相應位置 3...

月月查華華的手機

序列自動機 月月和華華一起去吃飯了。期間華華有事出去了一會兒,沒有帶手機。月月出於人類最單純的好奇心,開啟了華華的手機。哇,她看到了一片的qq推薦好友,似乎華華還沒有瀏覽過。月月頓時醋意大發,出於對好朋友的關心,為了避免華華浪費太多時間和其他聊天,她要刪掉一些推薦好友。但是為了不讓華華發現,產生猜疑...