病毒侵袭 HDU - 2896(AC自动机)

病毒侵袭

题目链接:HDU - 2896

题意:N个病毒编码,M个网站编码,问每个网站编码中包含那几种病毒;

思路:多串匹配多串,很明显是AC自动机,而且是个模板题;

之前写使用的指针写的,结果ML了,然后就找到了一个不用指针的模板,将指针改为了二维数组,这样就不会ML了;

#include <bits/stdc++.h>
using namespace std;
int n, m;
struct Trie{
	int next[100010][128], fail[100010], end[100010];
	int root, L;
	int new_node(){
		for(int i=0; i<128; i++){
			next[L][i]=-1;
		}
		fail[L]=-1;
		end[L++]=-1;
		return L-1;
	}
	void init(){
		L=0;
		root=new_node();
	}
	void insert(char *s, int id){
		int p=root, q;
		int len=strlen(s);
		int x;
		for(int i=0; i<len; i++){
			x=s[i];
			if(next[p][x]==-1){
				q=new_node();
				next[p][x]=q;
			}
			p=next[p][x];
		}
		end[p]&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值