摘要: 题目大意,给出两个字符串集合S和T,向T中添加字符串,查询S_i在T中有几个字符串出现过。一看这种多字符串匹配问题,我们联想到了AC自动机,做法就是,对于S集合我们建立一个AC自动机,建出fail树,fail树有一个很好的性质就是,对于一个节点x,它所对应的字符串是它子树中所有节点对应的字符串的后缀 阅读全文
posted @ 2018-01-22 21:57 大奕哥&VANE 阅读(217) 评论(1) 推荐(0) 编辑
摘要: 绝世好题。 正当我犹豫不决时,hzwer说:“MAP!!!” 没错这题大大的暴力,生猛的stl,贼基尔爽,,ԾㅂԾ,, 由于我们求点名在名字中的子串个数,所以将点名建AC自动机,记录节点属于哪次点名,每次带着这位同学的所有名字去里面扫,注意判重 复杂度20000*100000以及玄学的stl复杂度。 阅读全文
posted @ 2018-01-22 17:28 大奕哥&VANE 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 学习了FFT用来求多项式的乘法,看了算导上的介绍,上面讲的非常明白,概括一下FFT的原理就是,我们在计算多项式的乘法时,如果暴力模拟的话是n^2 复杂度的,就像小学学的竖式乘法一样,比如一个n位数乘上一个n位数,我们需要用竖式乘法计算要列n行,每一行有n个元素,然后相邻两行错开一位(很显然,竖式乘法 阅读全文
posted @ 2018-01-22 16:42 大奕哥&VANE 阅读(1350) 评论(0) 推荐(0) 编辑
摘要: 询问x这个串在y中出现的次数。 fail数组有一个性质就是一旦a的fail指向b那么b所代表的字串一定是a的后缀。 所以我们看fail树(即按fail反向建树)中x的子树有多少y的结点即可。 这个操作可以使用树状数组维护dfs序操作。 By:大奕哥 阅读全文
posted @ 2018-01-22 14:30 大奕哥&VANE 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 找到了一个不错的题,题目中说要让路径异或和最大,考虑由于路径非常复杂,所以不太可能按照某一路径进行dp,一般对于异或和的操作我们进行线性基,最后答案的路径一定是一条从1到n的路径加上几个环构成,我们dfs找出环来,记录每一个环的异或和,我们可以随意选取一条从1到n的路径当作初始答案去进行线性基,因为 阅读全文
posted @ 2018-01-22 13:18 大奕哥&VANE 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 我们不能让重复过的字串出现在无限串上(就叫这个了。。。) 也就是要自动机一直能匹配但就是匹配不到,那么就是在自动机上找一个环。 dfs判环即可。注意是个有向图。 阅读全文
posted @ 2018-01-22 10:49 大奕哥&VANE 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 直接统计答案,要是统计相同个数呢?不清零即可。 阅读全文
posted @ 2018-01-22 09:12 大奕哥&VANE 阅读(145) 评论(0) 推荐(0) 编辑