今天下午討論了一下校賽的題,終於最終拍板,把校賽的題目定下來了。
然後今天a掉了4個ac自動機的題目。終於完成了ac自動機**裡面的15個題。至此ac自動機完全結束。
明天開啟線段樹專題。。。。。
1,,hdu-2457-dna repair
題目:給出一些不合法的模式dna串,給出乙個原串,問最少需要修改多少個字元,使得原串中不包含非法串
做法:把病毒串做成乙個trie樹。
dp[i][j]:長度為i,在trie樹上的狀態為j,需要改變的最少的字元的個數。
dp[i][j]=dp[i-1][k]+轉移費用。
#include#include#include#include#include#include#include#includeusing namespace std;
#define ll __int64
#define maxn 55
const int maxnode=55*21;
const int childnum=5;
const int mod=1000000007;
const int inf=99999999;
struct ac_tree
pp,qq;
struct ac_tree
{ int chd[maxnode][childnum];
int val[maxnode];
int fail[maxnode];
int q[maxnode];
int var[maxnode];
int vis[maxnode];
int dist[maxnode];
int st[maxn];
int id[128];
int sz;
int maps[maxn][maxn];
int ns;
int dp[1<<11][maxn];
void init()
{fail[0]=0;
for(int i=0;ique;
while(!que.empty())que.pop();
int x=st[u];
que.push(x);
memset(dist,-1,sizeof(dist));
dist[x]=0;
while(!que.empty())
{x=que.front();
que.pop();
for(int i=1;i"<
AC自動機總結
講解 ac自動機講解1 ac自動機講解2 1.模版題 hdu2222 include include include using namespace std int k int n char s 10010 60 char mat 1100000 int cnt struct node trie 1...
AC自動機總結
考慮kmp問題的公升級版,即有多個模式串,單個文字串。問匹配次數。考慮對於每乙個模式串建乙個 fail 然後對於每乙個模式串都和文字串暴力跑。前置知識 trie樹,bfs 沒什麼好說的。演算法實現 我們考慮將所有的模式串放到一顆 trie 樹,如果匹配失敗的話轉移到 fail 指標上面去,這樣子複雜...
AC自動機學習總結
久聞ac自動機的大名,終於,在準備好kmp和字典樹之後,開始學習這個看起來高大上的演算法了。多餘的寫題的時候在補充吧,學完之後發現他的板子並不難,理解也不算太難,網上有很多種寫法,近期研究一下,一些 的常數的問題。洛谷有道題,直接就是板子 參考不知名大佬的板子 看了好多人的板子了 然後放棄指標,因為...