
AC自动机
二分抄代码
去了18ec没资格去19ec的反向训练选手
展开
-
密信与计数 CCF-CSP202009
http://118.190.20.162/view.page?gpid=T109当时把这题写完调了一万年,没时间搞第4题了ac自动机维护数位DP转移注意要fail链要预处理成sqrt(n)转移,详见https://codeforces.com/contest/1437/problem/G的题解#include<bits/stdc++.h>using namespace std;const int maxl=1002;const int mod=998244353;原创 2021-04-06 01:30:49 · 522 阅读 · 0 评论 -
codeforces1437G Death DBMS
https://codeforces.com/contest/1437/problem/G要找一个串是另一个串的子串,直接把所有名字建一个ac自动机,在它们的末尾节点搞个multiset存他们的值然后修改就直接找到那个人的名字在ac自动机上的末尾节点修改multiset查询就直接对着查询串跑一遍,暴跳fail链(这样据说一次是sqrt(n)的?),沿路记录multiset中最大值#include<bits/stdc++.h>using namespace std;typed原创 2020-10-28 00:54:34 · 281 阅读 · 0 评论 -
HDU6138
先构造AC自动机,完了以后对于x,y,先用x把x的所有子串标记了,再用y去寻找是否y的子串为也是x的子串,根据字典树的性质,这已经保证了一定是原先某字串的前缀了。一开始T掉我还以为数据卡的恨死,结果是小细节错误,while(v && !ch[v][c])写成了while(!ch[v][c])导致死循环,xushu教了几个细节,不用吧所有串压到一个char数组里后面再调取,直接记录每个串的末尾节点,原创 2017-08-26 19:27:45 · 339 阅读 · 0 评论