AC自动机模版
来源:互联网 发布:yy淘宝兼职是真的吗 编辑:程序博客网 时间:2024/05/22 04:58
struct node{int val;node *next[26];node *fail;node(){val = 0;for(int i = 0; i < 26; i++)next[i] = NULL;fail = NULL;}};node *root;void insert(char *s){int n = strlen(s);node *curr = root;for(int i = 0; i < n; i++){int c = s[i] - 'a';if(curr->next[c] == NULL){node *newnode = new node;curr->next[c] = newnode;}curr = curr->next[c];}curr->val++;}void build(){root->fail = NULL;queue <node*> Q;Q.push(root);while(!Q.empty()){node *temp = Q.front();node *p = NULL;Q.pop();for(int i = 0; i < 26; i++){if(temp->next[i] == NULL)continue;if(temp == root)temp->next[i]->fail = root;else{p = temp->fail;while(p != NULL){if(p->next[i] != NULL){temp->next[i]->fail = p->next[i];break;}p = p->fail;}if(p == NULL)temp->next[i]->fail = root;}Q.push(temp->next[i]);}}}void find(char *s){int n = strlen(s);node *p = root;for(int i = 0; i < n; i++){int c = s[i] - 'a';while(p != root && p->next[c] == NULL)p = p->fail;p = p->next[c];if(p == NULL)p = root;node *temp = p;while(temp != root){ans += temp->val;temp->val = 0;temp = temp->fail;}}}void del(node *p){for(int i = 0; i < 26; i++){if(p->next[i] != NULL)del(p->next[i]);}free(p);}
const int maxnode = 500*210;const int size = 128;int ch[maxnode][size];int val[maxnode];int f[maxnode];int sz;bool id[maxn];void init(){sz = 1;memset(ch[0], 0, sizeof(ch[0]));}void insert(char *s, int v){int u = 0, n = strlen(s);for(int i = 0; i < n; i++){int c = s[i];if(!ch[u][c]){memset(ch[sz], 0, sizeof(ch[sz]));val[sz] = 0;ch[u][c] = sz++;}u = ch[u][c];}val[u] = v;}void getFail(){queue <int> q;f[0] = 0;for(int c = 0; c < size; c++){int u = ch[0][c];if(u){f[u] = 0;q.push(u);}}while(!q.empty()){int r = q.front(); q.pop();for(int c = 0; c < size; c++){int u = ch[r][c];if(!u){ch[r][c] = ch[f[r]][c];continue;}q.push(u);f[u] = ch[f[r]][c];}}}void find(char *s, int num){int n = strlen(s);int j = 0;for(int i = 0; i < n; i++){j = ch[j][s[i]];int temp = j;while(temp){if(val[temp] > 0){;}temp = f[temp];}}}
0 0
- hdu2222 ac自动机模版
- AC自动机模版
- AC自动机模版
- AC自动机模版
- AC自动机模版
- ac自动机模版hdu2222
- hdu2222 ac自动机模版
- AC自动机模版
- ac自动机模版
- HDOJ2222 AC自动机模版题
- hdu 2222 ac自动机模版
- HDU 2222 AC自动机模版
- Trie树,AC自动机模版
- LA4670 AC自动机模版题
- HDU 5384 AC自动机模版
- ac自动机模版(hdu 5384)
- HDU 2222 AC自动机模版题
- hdu 2896 AC自动机模版题
- 迷你DVD租用管理系统
- 构造方法与方法的重载
- 使用this调用重载的构造方法
- 继承关系中的构造方法
- mysql插入系统时间
- AC自动机模版
- 抽象类与抽象方法 abstract
- 找错题:最终变量final
- 抽象类与抽象方法
- android 布局中 layout_gravity、gravity、orientation、layout_weight【转】
- 多态实例及其问题
- Main函数参数argc,argv说明
- 实现多态的条件与规则
- 2013年10月 TIOBE 编程语言排行榜单