每日總結 05 19(AC自動機結束)

2021-06-22 03:09:33 字數 1351 閱讀 9821

今天下午討論了一下校賽的題,終於最終拍板,把校賽的題目定下來了。

然後今天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和字典樹之後,開始學習這個看起來高大上的演算法了。多餘的寫題的時候在補充吧,學完之後發現他的板子並不難,理解也不算太難,網上有很多種寫法,近期研究一下,一些 的常數的問題。洛谷有道題,直接就是板子 參考不知名大佬的板子 看了好多人的板子了 然後放棄指標,因為...