「ZOJ-3430」Detect the Virus
AC自动机,求每个匹配串能匹配的模式串种类数
题意
给定$n$个模式串和$m$个匹配串(均以base64
加密),求匹配串中出现模式串的种类个数。
解法
对于base64
的解码,即将字符对应的6位二进制串转化为8位二进制数,可以通过位运算完成,如下:
1 | //取编码后字符串当前位的二进制串,置于后6位 |
理论上解码之后就可以当做AC自动机模板题做然而
Segmentation Fault
:解码之后的字符串范围在0-256,需要使用unsigned char
,否则会导致数组下标小于零越界(其实int
也可以);Wrong Answer
:解码后的字符串值包含0,不能直接使用strlen(str)
求解字符串长度;Wrong Answer
:求解的是字符串的种类数
好了我就这么被卡了5小时。
代码
1 |
|