Ac自动机
文章平均质量分 71
stargazer.
夜を穿つの
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Codeforces 917 E】Upside Down(Ac自动机 / 后缀数组 / 哈希 / border相关 / Kmp / Exgcd)
传送门 至今写过最长的字符串题 看起来和回忆树差不多 但不能直接kmpkmpkmp了 分成u→lca,lca→vu\rightarrow lca,lca\rightarrow vu→lca,lca→v和穿过lcalcalca分别考虑 前面直接照搬回忆树的做法 考虑穿过lcalcalca的 求出u→lcau\rightarrow lcau→lca中最长的后缀满足是SSS的前缀的长度 以及lca→vlca\rightarrow vlca→v最长前缀满足为SSS后缀的长度 得到了可以直接利用borderborde原创 2020-05-20 20:18:20 · 725 阅读 · 0 评论 -
【Codeforces 590 E】Birthday(AC自动机 / 二分图匹配)
传送门 建出AcAcAc自动机后即可求出串和串之间的偏序关系 建成一个DAGDAGDAG 然后做一次最长反链并输出方案即可 #include<bits/stdc++.h> using namespace std; #define cs const #define re register #define pb push_back #define pii pair<int,int&g...原创 2020-04-23 11:10:39 · 329 阅读 · 0 评论 -
【Codeforces 547 E】Mike and Friends(Ac自动机 / 树状数组)
传送门 不知道为什么会是div1Ediv1Ediv1E 显然建出acacac自动机 显然一个操作对应的就是l,rl,rl,r对应的所有串在trietrietrie上所有点加111 然后询问failfailfail树上xxx对应位置的子树的和 离线下来用树状数组维护即可 #include<bits/stdc++.h> using namespace std; #define cs con...原创 2020-03-17 19:58:07 · 257 阅读 · 0 评论 -
【BZOJ3881】【Coci2015】—Divljak(Ac自动机+树状数组)
传送门 相当于吗每次把TTT在AcAcAc自动机上跑 把经过的所有点在failfailfail树上的祖先不重复的加一 单点询问权值 在AcAcAc自动机上走,把所有经过的点按照dfndfndfn排序 把相邻两点的LcaLcaLca到根减一即可 由于链加是O(log2n)O(log^2n)O(log2n)的 转成单点加,子树求和可以做到O(nlogn)O(nlogn)O(nlogn) 因为我AcAc...原创 2019-09-25 22:04:45 · 163 阅读 · 0 评论 -
【HDU 5566】—Clarke and room(Ac自动机+树链剖分)
传送门 感觉像以前做过的一道题的简化版 而且可以离线做 这样时空复杂度都会小很多 #include<bits/stdc++.h> using namespace std; const int RLEN=1<<20|1; inline char gc(){ static char ibuf[RLEN],*ib,*ob; (ob==ib)&&(o...原创 2019-09-25 17:47:22 · 274 阅读 · 0 评论 -
【BZOJ #4231】—回忆树(Kmp+Ac自动机)
传送门 考虑把经过LcaLcaLca提出来暴力KmpKmpKmp统计 总长度只有O(∣S∣)O(|S|)O(∣S∣)的 现在只用考虑一段链 差分后就是到根的一条链 考虑从根dfsdfsdfs,dfsdfsdfs的同时在AcAcAc自动机上走,把每个点点权加一 对于每个询问就是failfailfail树子树和 走出去的的时候减一 对正反串分别建一个AcAcAc自动机就可以了 #include<...原创 2019-09-25 17:15:59 · 395 阅读 · 0 评论 -
【洛谷P2444】【POI2000】—病毒(Ac自动机)
传送门 很显然就是从AcAcAc自动机根开始走不经过任何一个终点有一个环 记得建failfailfail的时候下传终点标记 #include<bits/stdc++.h> using namespace std; const int RLEN=1<<20|1; inline char gc(){ static char ibuf[RLEN],*ib,*ob; ...原创 2019-09-25 17:04:49 · 141 阅读 · 0 评论 -
【BJOI2019 Day1】简要题解
T1: 传送门 很显然是要在AcAcAc自动机上dpdpdp 一个显然的dpdpdp是f[i][j][k]f[i][j][k]f[i][j][k]表示前iii个字符,当前在自动机的点jjj,已经有kkk个咒语的最大价值 但是由于咒语最多有O(n2)O(n^2)O(n2)个复杂度太差了 由于max∏vc\max \sqrt[c]{\prod v}maxc∏v不好处理 考虑转成对数 就变成max...原创 2019-09-05 14:22:08 · 209 阅读 · 0 评论 -
【NOIp训练】—子串查找VII(AC自动机+树链剖分+线段树)
传送门 题意: 给定nnn个点的树,树上每个节点存有一个字符串sss和权值vvv 有mmm次询问 每次给定一个字符串SSS和树上一条路径 询问每个节点的s在S中出现次数×vs在S中出现次数\times vs在S中出现次数×v之和 支持修改点的权值 n,m≤2e5,∑∣S∣,∣s∣≤4e5n,m\le2e5,\sum|S|,|s|\le 4e5n,m≤2e5,∑∣S∣,∣s∣≤4e5 结果数据水的...原创 2019-08-24 14:55:03 · 264 阅读 · 3 评论 -
【BZOJ4861】【BJOI2017】—魔法咒语(AC自动机+矩阵快速幂优化dp)
传送门 当l≤100l\le 100l≤100时 显然的自动机上dpdpdp就完了 当l≤1e8l\le1e8l≤1e8时直接dpdpdp显然是不行的 但是发现基本串长度不大于二 考虑矩乘优化 a[i][j]a[i][j]a[i][j]表示有几个基本串使得在自动机上iii走到jjj 如果所有串长相同就可以直接快速幂了 但是串长有111有222 不同长度不好处理拼起来的情况 设A1A_1A1表示长...原创 2019-07-19 17:45:42 · 267 阅读 · 0 评论 -
【BZOJ3530】【SDOI2014】—数数(Ac自动机+数位dp)
传送门 f[0/1][j][k]f[0/1][j][k]f[0/1][j][k]表示有无限制,匹配到jjj位,在自动机上的点kkk的方案数 瞎dpdpdp就完了 注意前导0的情况,比如限制012301230123,但123123123是合法的 #include<bits/stdc++.h> using namespace std; #define gc getchar inline ...原创 2019-07-19 12:01:02 · 177 阅读 · 0 评论 -
【USACO12JAN】—视频游戏的连击Video Game Combos(AC自动机+dp)
描述 贝西在玩一款游戏,该游戏只有三个技能键 “A”“B”“C”可用,但这些键可用形成N种(1 <= N<= 20)特定的组合技。第i个组合技用一个长度为1到15的字符串S_i表示。 当贝西输入的一个字符序列和一个组合技匹配的时候,他将获得1分。特殊的,他输入的一个字符序列有可能同时和若干个组合技匹配,比如N=3时,3种组合技分别为"ABA", “CB”, 和"ABACB",若贝西输入...原创 2019-07-19 11:57:57 · 263 阅读 · 0 评论 -
【BZOJ2434】【NOI2011】—阿狸的打字机(AC自动机+线段树)
传送门 考虑一个串AAA在另一个串BBB中出现的次数 其实就是BBB串的链上有多少个点的failfailfail直接或间接指向AAA的末指针 所以建出failfailfail树后就是AAA的末指针的子树和 每次暴力把BBB的所有点设成1查询可以有707070分 离线后对于每个BBB记一下要询问哪些就行了 复杂度O(nlogn)O(nlogn)O(nlogn) #include<bits/s...原创 2019-06-09 16:08:33 · 140 阅读 · 0 评论
分享