同樣是一道很裸的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...