hdu2896 AC自動機 病毒侵襲

2021-06-13 05:18:29 字數 829 閱讀 2539

同樣是一道很裸的ac自動機,統計哪些特徵碼出現在**的原始碼上,匹配成功時不要將val賦值為0,因為後面還有文字串要匹配,另外要注意編號需要從小到大輸出。

**:

#include#include#includeusing namespace std;

const int maxn = 100000 + 10;

const int maxm = 500 + 10;

const int maxlen = 10000 + 10;

const int child_num = 128;

int n,m,tot = 0,sz = 1;

char temp[maxlen],exp[maxlen];

class acautumaton

void insert(char *a,int key)

p = chd[p][c];

} val[p] = key;

} void construct()

}while(s != e)

else v = chd[ fail[u] ][i];

}} }

void work(char *t)

}} void print(int step)

printf("%d\n",ans[cnt-1]);

} }}ac;

void init()

void readdata()

ac.construct();

}void solve()

printf("total: %d\n",tot);

}int main()

病毒侵襲 HDU 2896 AC自動機

使用ac自動機求解 插入病毒串時記錄病毒串id 題目保證不同的串有不同的id直接記錄即可 使用vis陣列記錄主串編號 同編號標記的不在處理 注意字符集為所有可見字元 題目記憶體卡的比較緊 不要使用memset清空陣列否則會mle 原因是開啟o2優化時會只消耗使用過的記憶體 include inclu...

hdu2896 AC自動機模板)

ac自動機模板題 下面說幾個注意點 1 題目中說字元是可見字元,可見字元的asc碼是32 127 由於不清楚這一點wa了無數次 2 發現ac自動機網上 都是用指標來寫的,我這裡提供靜態陣列的寫法 如下 include include include include include include i...

HDU2896 AC自動機 模板

思路 因為不同病毒特徵碼不會相同。ac自動機,然後對於每乙個輸出即可。注意 以上字串中字元都是ascii碼可見字元 不包括回車 g mle。include include include include include includeusing namespace std const int n 1...