NYOJ 1085 數單詞 AC自動機模板

2021-07-14 21:17:21 字數 2088 閱讀 7159

數單詞

時間限制:2000 ms | 記憶體限制:120000 kb

難度:4

描述 為了能夠順利通過英語四六級考試,現在大家每天早上都會早起讀英語。

lyh本來以為自己在6月份的考試中可以通過六級,可是沒想到,成績出來以後,居然沒有通過。所以他不得不付出更多的時間來學習英語。

要想通過六級,最基本的要求就是詞彙量。為了能夠更快的記住一些陌生單詞,lyh有時會找一些英語文章來讀。

今天早上,lyh又找了一篇文章。讀之前,他突然萌生出乙個想法:文章中哪些單詞出現的次數最多呢?

輸入 第一行輸入乙個整數t,表示有t組測試資料(1≤t≤200)。

對於每組測試資料,第一行輸入乙個整數n(1≤n≤150),表示lyh要查詢的單詞數量(有些單詞可能會重複出現)。

接下來n行,每行輸入乙個單詞,長度不大於100。

最後一行包含乙個由小寫字母組成的英語文章(字串),長度不大於10^6。

輸出 對於每組資料,第一行輸出乙個整數,表示單詞出現的次數。

然後按照輸入順序,每行輸出乙個出現次數最多的單詞。如果有重複出現的單詞,把它們全部輸出。

樣例輸入

2 3

good

oo one

goodafternooneveryone

1 to

welcometotopcoder

樣例輸出

2 oo

one

2 to

ac自動機模板 - -!

#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; //字串string 出現過int次

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()

} while(!q.empty())

} }

};

char text[text_size]; //文字串

char p[p_num][p_size]; //模式串

ahocorasickautomata ac; //結構體

int n, t;

int main()

ac.get_fail(); //得到fail函式

scanf("%s", text); //輸入文字串

ac.find(text); //查詢

int max_cnt = -1;

for(int i = 1; i <= n; i++)

if(ac.cnt[i] > max_cnt)

max_cnt = ac.cnt[i];//找出現最的串的次數

printf("%d\n", max_cnt);

for(int i = 1; i <= n; i++)

if(ac.cnt[mp[string(p[i])]] == max_cnt) //string(p[i])把字串轉化為string型別

printf("%s\n", p[i]);

} return

0;

}

NYOJ 1085 數單詞 (AC自動機模板題)

時間限制 1000 ms 記憶體限制 65535 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的和。根據這個結論,我們...