随笔分类 -  AC自动机

摘要:建出AC自动机及其fail树,每次给新加入的串在AC自动机上经过的点染色,问题即转化为子树颜色数。显然可以用dfs序转成序列问题树状数组套权值线段树解决,显然过不掉。事实上直接树上差分,按dfs序排序后lca处-1,树状数组维护子树和即可。 又一次写了cmp后没放进sort,心态爆炸。 阅读全文
posted @ 2019-01-02 19:50 Gloid 阅读(205) 评论(0) 推荐(0)
摘要:当然可以在SA上二分答案,但看起来会被卡log。考虑对模板串建出AC自动机,用母串在上面跑,标记上所有能到达的点。注意到达某个点时需要标记所有其通过fail指针可以走到的点,如果遇到一个标记过的点就可以退出,因为显然后面所指向的已被标记。查询时由每个模板串的结尾节点向上暴力找第一个被标记的点即可。 阅读全文
posted @ 2018-10-27 02:50 Gloid 阅读(328) 评论(0) 推荐(0)
摘要:考虑对一个串如何分割能取得最大值。那么这是一个经典的线段覆盖问题,显然每次取右端点尽量靠前的串。于是可以把串放在AC自动机上跑,找到一个合法串后就记录并跳到根。 然后考虑dp。设f[i][j]表示前i位走到AC自动机上j节点的概率,枚举下个字符即可转移。同时记录此时期望伤害,找到合法串就统计入答案。 阅读全文
posted @ 2018-09-04 00:09 Gloid 阅读(138) 评论(0) 推荐(0)