摘要:
简介 数位$dp$归为计数$dp$,通常需要统计一个区间$[L,R]$内满足某些限制条件的个数 前言 数位dp其实很久前就知道了,也做过几道和其他算法混在一起的题目,其实通过手玩是能做的 但毕竟是种算法,还是系统学下比较好(节省手玩时间) 模板题 "P2602 [ZJOI2010]数字计数" 求$[ 阅读全文
摘要:
题目 "P4045 [JSOI2009]密码" 做法 AC自动机+状压+爆搜 建AC自动机是显然的,顺便预处理$lst_i$表示$i$结点以哪些串结束(二进制) 然后跑状压$dp[i][j][k]$表$i$长度现在在$j$结点已经出现的串$k$,理解:自由结点则由根节点$0$传递 毒瘤的地方在于输出 阅读全文
摘要:
题目 "CF710F String Set Queries" 做法 很好的题目(AC自动机) 支持三种操作:插入,删除,查询 删除很好做,再建个自动机然后差分就行了 题目难点主要是插入,对于每个新来的串都重构,T是肯定的 这题我们用二进制来解决,对于插入和删除建多个自动机,然后查询时累加所属的多个自 阅读全文
摘要:
题目 "P2292 [HNOI2004]L语言" 化简题目:多个匹配串,多个文本串,求文本串恰好被匹配串拼接的最长前缀 做法 显然我们对文本串建AC自动机,然后标记末节点 建$tire$图,需要注意的是:末节点标记不能下传,原因在于对文本串跑差分的操作,自己想想吧 多于每个文本串跑$trie$图,对 阅读全文
摘要:
$fail$指针:指向最长的在$tire$里出现的后缀 比$tire$多出来的子边:原来的$tire$,我们失配后又得返回根结点再次匹配,而加入这些边后只需要花$strlen(s)$就能实现所有匹配 跑$tire$图:能跑到一个结点,该结点所代表的串能被文本串表示 例题 问题1:多个模式串,一个文本 阅读全文
摘要:
题目 "P2444 [POI2000]病毒" 做法 我们要找出无限安全字符串,则是这段字符串没有任意一点作为危险字符串的末点 我们对所有危险的字符串建AC自动机,然后跑一遍$trie$图,然后暴力判断是否有环,有环则说明存在无限安全字符串 My complete code cpp include i 阅读全文
摘要:
题目 "P2617 Dynamic Rankings" 做法 单点修改主席树 纯粹按模板题的做法,建完主席树后修改一个点后面所有的树都得修改$O(mnlogn)$,T飞了 树状数组套主席树,在主席树根结点上用树状数组跳着修改O(mlogn^2) My complete code cpp // luo 阅读全文