hdu 222 keywords search
ac 自動機入門模板題
調了一下午
因為輸入最後乙個字串打成了%d還有兩處取反符號打錯 wa了無數次
血淚史 以後要注意
ac自動機思路:
這個演算法的目的:用幾個給定的模式串去在乙個串 t 中匹配
簡單概括實現方式:
1.對所有的模式串建trie樹。
2.從根節點開始建立fail指標。基本的邏輯如下:
buildfail(node root)
3.匹配過程:看**吧= = = = = = = = =
#include
#include
#include
#include
#include
using
namespace
std;
int t,n;
class trie
};inline
int getid(char t)
int len,id;trie *p;
void inserttrie(char * pat,trie * root)
p->cnt++;
return ;
}queue
q;trie * temp;
void buildfail(trie * root)
p=p->fail;
}if(!p) temp->nxt[i]->fail=root;
}q.push(temp->nxt[i]);
}
}return ;
}int ans=0;
int acmatch(char * str,trie * root)
}return ans;
}void datain()
buildfail(root);
scanf("%s",buf);
printf("%d\n",acmatch(buf,root));
}}int main()
hdu 2222 ac自動機模版
include include structnode q 1000010 charss 1010 s 55 voidinsert chars,node root p num voidacmove node root p p fail if p null now next i fail root q ...
hdu 2222 ac自動機模板
題意 題意 給出n個串,然後給一篇文章,問這n個串有多少個在文章裡面出現過。trick n個串可能有相同的,需按照不同串處理。剛學ac自動機,沒學明白,這 也是照著別人部落格寫的,弱爆 include include include include include using namespace s...
hdu2222 (AC自動機模板)
題 學習出 主要是fail的建立。在跳的過程就是不斷跳fail,而不是跳到乙個fail再往下!include include include include include using namespace std typedef long long ll const int m 2e6 6 int ...