模式串達到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 }
1const
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...