時間限制:
1000 ms | 記憶體限制:
65535 kb
難度:4 描述
為了能夠順利通過英語四六級考試,現在大家每天早上都會早起讀英語。
lyh本來以為自己在6月份的考試中可以通過六級,可是沒想到,成績出來以後,居然沒有通過。所以他不得不付出更多的時間來學習英語。
要想通過六級,最基本的要求就是詞彙量。為了能夠更快的記住一些陌生單詞,lyh有時會找一些英語文章來讀。
今天早上,lyh又找了一篇文章。讀之前,他突然萌生出乙個想法:文章中哪些單詞出現的次數最多呢?
輸入第一行輸入乙個整數t,表示有t組測試資料(1≤t≤200)。
對於每組測試資料,第一行輸入乙個整數n(1≤n≤150),表示lyh要查詢的單詞數量(有些單詞可能會重複出現)。
接下來n行,每行輸入乙個單詞,長度不大於100。
最後一行包含乙個由小寫字母組成的英語文章(字串),長度不大於10^6。
輸出對於每組資料,第一行輸出乙個整數,表示單詞出現的次數。
然後按照輸入順序,每行輸出乙個出現次數最多的單詞。如果有重複出現的單詞,把它們全部輸出。
樣例輸入
23good
ooone
goodafternooneveryone1to
welcometotopcoder
樣例輸出
2分析:這就是乙個ac自動機模板題,要注意的是查詢的單詞中,乙個單詞可能會出現多次,這裡要處理一下。ooone
2to
#include #include #include #include #include #include using namespace std;
#define sigma_size 26 //文字串字元內容
#define maxnode 20000 //節點數量
#define text_size 1000005 //文字串長度
#define p_size 100 //模式串長度
#define p_num 200 //模式串數量
map mp;
struct ahocorasickautomata
int idx(char c)
void insert(char *s,int v)
u = ch[u][c];
}val[u] = v;
mp[string(s)] = v;
}void print(int j)
}void find(char *t)
}void get_fail()
return 0;
}
NYOJ 1085 數單詞 AC自動機模板
數單詞 時間限制 2000 ms 記憶體限制 120000 kb 難度 4 描述 為了能夠順利通過英語四六級考試,現在大家每天早上都會早起讀英語。lyh本來以為自己在6月份的考試中可以通過六級,可是沒想到,成績出來以後,居然沒有通過。所以他不得不付出更多的時間來學習英語。要想通過六級,最基本的要求就...
單詞統計 AC自動機
1118.單詞統計 time limit 1000 ms memory limit 32768 kb total submission s 12 accepted submission s 1 description 給定乙個字串和若干個單詞,統計這些單詞在這個字串中出現的次數。input 第一行為...
BZOJ 3172 單詞 (AC自動機)
這道題是個裸的ac自動機,但是我還是調了很久qaq。首先如果我們直接用每個單詞來匹配的,時間不是很理想。這道題要用到ac自動機的衍生物 fail樹 我也是做這道題才知道有這個東西 fail樹有這麼乙個結論 乙個字串出現的次數等於以它為根節點的fail樹的子樹中所有節點的cnt的和。根據這個結論,我們...