随笔分类 -  数据结构->字符串->AC自动机

摘要:LOJ 3089. 「BJOI2019」奥术神杖 看见乘积就取log,开根号就是除法,很容易发现这就是一道01分数规划。。 然后建出AC自动机直接dp就行,判断条件要设成 0,因为起点的值是1,取完ln后是0 cpp include define fi first define se second 阅读全文
posted @ 2019-06-05 11:45 sigongzi 阅读(322) 评论(0) 推荐(0)
摘要:题解 好神仙的题啊 感觉转二维平面能想到,算重复情况的方法真想不到啊 通过扒stdcall代码获得的题解QAQQQQ 我们先把$p_i$正串反串建出一个AC自动机来 然后我们把s串放在上面跑匹配,正着跑一遍,反着跑一遍,我们就得到了$s$中每个位置正着和反着能匹配到的节点编号 然后对于AC自动机,我 阅读全文
posted @ 2018-12-01 09:23 sigongzi 阅读(817) 评论(0) 推荐(0)
摘要:题解 我们发现第一种操作肯定不可取,每个节点里它最近的点是它最长出现过的后缀,发现这就是AC自动机的fail节点,根据fail的关系这会是一棵树,而一个单词的前一个序号最大的后缀必定是它的父亲 然后我们考虑怎么获得最小值,x是肯定要加上的,我们让每次减掉的y最小 一个错误的想法:按照儿子个数分类,建 阅读全文
posted @ 2018-06-08 15:21 sigongzi 阅读(130) 评论(0) 推荐(0)