AC自动机
zxyoi_dreamer
退役了退役了爬了爬了,搞个锤子算法竞赛,不如好好享受大学生活。
展开
-
【CF917E】Upside Down(哈希二分)(后缀数组)(AC自动机)
传送门 诈尸,主要是最近一直在刷水题感觉没有什么值得写的。 口胡好题,不建议写。 题解: 一句话说,将出现的情况分为在 u-LCA链上 和横跨LCA 分别统计。 在链上的可以直接建立正反AC自动机,然后树上DFS的同时AC自动机中DFS序+差分算一下出现次数即可。 考虑横跨LCA的情况,找出 u->LCA 的后缀能匹配的最长前缀和 LCA->v 的前缀能匹配的最长后缀。那么所有能匹配的前缀和后缀都是最长匹配前缀和后缀的border,分为log个等差数列,算一下凑成原串的方案数即可。 然后讲一下原创 2020-05-20 21:45:43 · 903 阅读 · 0 评论 -
【BJOI2019】奥术神杖(分数规划)(AC自动机)
传送门 题解: 对代价取一个Ln之后就是分数规划的裸题,匹配按照套路使用AC自动机即可。 代码: #include<bits/stdc++.h> #define ll long long #define re register #define cs const inline bool ckmax(double &a,cs double &b){return a&l...原创 2019-10-17 20:34:09 · 135 阅读 · 0 评论 -
【BZOJ3881】[Coci2015]Divljak(AC自动机)(树上差分)(树状数组)
传送门 题解: 对SSS建立AC自动机之后,我们发现一个PPP串扔进来就是把所有自己匹配点的祖先不重复地+1,显然树上差分搞定,用树状数组维护一下标记之和就行了。 代码: #include<bits/stdc++.h> #define ll long long #define re register #define gc get_char #define cs const nam...原创 2019-09-23 19:39:31 · 194 阅读 · 0 评论 -
【HDU5566】Clarke and room(AC自动机)(树链剖分)(线段树)
传送门 题解: 在线也好离线也好,反正AC自动机只建在有询问的线段树节点上就行了。 由于树链剖分形态的特殊性,可能很多线段树节点上都没有询问(是两条链标号的并),建出来就是浪费时间。 代码: #include<bits/stdc++.h> #define ll long long #define re register #define gc get_char #define cs...原创 2019-09-23 18:56:31 · 186 阅读 · 0 评论 -
【HDU6096】String(AC自动机)
传送门 题解: 对于模式串strstrstr,我们构造串str+∗+strstr+*+strstr+∗+str,对于询问串pre,sufpre,sufpre,suf,我们构造串suf+∗+presuf+*+presuf+∗+pre 容易发现,对于所有的询问串建立AC自动机,然后把模式串放上去跑,匹配问题就解决了。至于串长限制,直接暴力跳fail即可。 对于离线的,这种做法已经足够了,也是就是我写...原创 2019-09-23 17:05:11 · 172 阅读 · 0 评论 -
【BZOJ4231】回忆树(AC自动机)(KMP)(DFS序)(树状数组)
传送门 题解: 一个串在从uuu到vvv的路径上匹配,我们直接分情况搞。 首先,匹配没有横跨LCA,那么一定是LCA−>uLCA->uLCA−>u的路径上匹配反串,LCA−>vLCA->vLCA−>v匹配原串,直接用AC的fail树上DFS序离线上树状数组,一波就能搞了。 然后是横跨了LCA的,直接把前后提一个∣S∣−1|S|-1∣S∣−1长度的串出来做匹配就...原创 2019-09-23 15:46:44 · 197 阅读 · 0 评论 -
【JSOI2009】密码(AC自动机)(KMP)(状压DP)(爆搜)
传送门 下面的代码用了少量std::string的成员函数来完成部分骚操作,如果看不懂请自行百度。 题解: 这个数据范围和询问的问题就很状压。 直接建立AC自动机之后状压DP就可以算出方案数。 然后你发现,这是一个计数类问题,不是最优化,却要求输出方案,也就是说我们不太好记录DP的转移方向。 先骂一句MMP 但是只会在方案数小于等于424242的时候要求输出。 然后你发现直接在AC自动机上爆搜复...原创 2019-09-23 11:58:13 · 220 阅读 · 0 评论 -
【SDOI2017】硬币游戏(高斯消元)(AC自动机)
传送门 因为不取模,所以高消的时候可能会在一些奇奇怪怪的地方炸精度。 都2017的省选了,在这种题目上为什么不取模啊 对计数和概率取模这种套路不是在2014年的时候就在各种OJ的比赛里面普及过了吗。。。 这道题的严格推导要用到无限集合的理论,我自己尝试证明了一遍,有点复杂,而且对于不懂高等概率的人来说可能看不懂,这里只给一个口胡式的解答。 题解: 首先我们明白一点,在接下来的ttt次随机中强行指...原创 2019-09-20 20:50:59 · 146 阅读 · 0 评论 -
【LOJ6681】yww 与树上的回文串(点分治)(AC自动机)(字符串哈希)(回文串broder理论)
传送门 社论(题解): 首先长剖重剖都考虑过了,并没有办法支持快速合并,边分更不用说了,权值在边上怎么边分怎么蛋疼。 考虑点分,我们知道如果一个回文串过了重心,他要么就是重心延伸出去的回文前缀,要么它被重心分成两段,短的一定是长的后缀。 很显然我们考虑用AC自动机求出这种后缀关系。 那么现在问题变成了, 代码: #include<bits/stdc++.h> #define ll ...原创 2019-07-18 19:23:22 · 964 阅读 · 0 评论 -
【NOI2011】【BZOJ2434】【洛谷P2414】阿狸的打字机(AC自动机)(DFS序)(树状数组)
洛谷传送门 BZOJ传送门 题解: 随手建立一个AC自动机,我们发现每个询问实际上就是问xxx的结尾在failfailfail树上的子树中有多少个点在传yyy上。 于是我们有一个办法对于任意的iii,快速处理所有y=iy=iy=i的询问,只需要将这个串在Trie树上的所有点权值设置为1,然后对于所有的xxx,询问子树和就行了。 由于这个AC自动机整体的大小是有保证,我们把所有询问挂在对应yyy上...原创 2019-07-15 14:19:17 · 123 阅读 · 0 评论 -
208.10.10【JSOI2007】【BZOJ1030】【洛谷P4052】文本生成器(AC自动机)(DP)
BZOJ传送门 洛谷传送门 解析: 为什么endendend又是关键字啊啊啊啊!!! 思路: 不要试图用容斥原理来做这道题。。。 这就是一个ACACAC自动机上的DPDPDP 首先建出ACACAC自动机,这时候我们得到所有串之间的包含关系。 然后,如果您有直接统计答案的做法,请私信博主,方便完善题解,这里提供一种反向统计的方法。 我们不统计满足条件的方案数,我们统计不满足的方案数。 因为总方案十...原创 2018-10-10 10:15:04 · 116 阅读 · 0 评论