ACM 第十四天

2022-03-20 15:05:23 字數 1848 閱讀 5849

模式串達到1e4直接暴力即可。

字串雜湊

字串hash的種類還是有很多種的,不過在資訊學競賽中只會用到一種名為「bkdr hash」的字串hash演算法。

模式串1e6,子串1e4,

所求串長度很小,達到50。

要學會ac自動機,我們必須知道什麼是trie,也就是字典樹。trie樹,又稱單詞查詢樹或鍵樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用於統計和排序大量的字串(但不僅限於字串)。

要搞懂ac自動機,先得有模式樹(字典樹)trie和kmp模式匹配演算法的基礎知識。ac自動機其實就是一種多模匹配演算法。

ac自動機演算法分為3步:解題步驟:1、建立trie樹 ;2、構造失敗指標(fail指標);3、模式匹配過程。

1

具體**;

2 #include 3 #include 4 #include

5struct

node

6*queue[500005];//

佇列,方便用bfs構造失敗指標

11char s[1000005];//

主字串

12char keyword[55];//

需要查詢的單詞

13 node *root;//

頭結點

14void init(node *root)//

每個結點的初始化

1521

void build_trie(char *keyword)//

構建trie樹

2235 p=p->next[v];//

指標移動到下乙個結點 36}

37 p->cnt++;//

單詞最後乙個結點cnt++,代表乙個單詞 38}

39void build_ac_automation(node *root)

4066 p=p->fail;67}

68//

讓該結點的失敗指標也指向root

69if(p==null)

70 temp->next[i]->fail=root;71}

72 queue[head++]=temp->next[i];//

每處理乙個結點,都讓該結點的所有孩子依次入隊 73}

74}75}

76}77int query(node *root)

78 99

else

//結點已訪問,退出迴圈

100break

;101 temp=temp->fail;//

回溯 失敗指標 繼續尋找下乙個滿足條件的結點

102}

103}

104return

count;

105}

106int

main()

107120

build_ac_automation(root);

121 scanf("

\n%s

",s);

122 printf("

%d\n

",query(root));

123}

124return0;

125 }

1

const

int n = 100100;2

intnxt[n];

3char s[100100];4

intslen, tlen;

5void

get_next()

6

參考部落格:

第十四天 Session

session通過sessionid來區分不同的客戶,session是以cookie或url重寫為基礎的,預設使用cookie來實現,系統會創造乙個名為jsessionid的輸出cookie,這稱之為session cookie,以區別persistent cookies 通常看不到jsession...

第十四天 response

教學導航 教學目標 案例二 生成驗證碼 了解 教學方法 我們在建立servlet時會覆蓋service 方法,或doget dopost 這些方法都有兩個引數,乙個為代表請求的request和代表響應response。service方法中的response的型別是servletresponse,而d...

Qt第十四天

qfiledialog檔案對話方塊 qcolordialog顏色對話方塊 qfontdialog字型對話方塊 qinputdialog輸入對話方塊 qmessagebox訊息框 dialog.h ifndef dialog h define dialog h include namespace ui...