随笔分类 -  AC自动机

摘要:Indie Album 我的写法是对询问串建ac自动机, 原来的串建trie图, 然后两边同时跑, 最后dsu on tree + bit 统计。。 其实可以不用这么麻烦, 我们把原串和询问串一起建一个ac自动机, 那么对一个一个串有贡献的在 fail树的子树里, 所以只要在trie图上dfs一下, 阅读全文
posted @ 2019-10-14 21:48 NotNight 阅读(184) 评论(0) 推荐(0)
摘要:HDU - 6086 前缀和后缀分别建AC自动机, 考虑从两端往中间dp dp[ o ][ i ][ j ][ mask ] 表示放了前面和后面o个, 第一个自动机在 i 位置, 第二个自动机在 j 位置, 拥有的目标串的状态是mask的方案数。 对于跨过两端的东西, 我们最后处理就好了。 阅读全文
posted @ 2019-06-29 20:56 NotNight 阅读(163) 评论(0) 推荐(0)
摘要:Legen... 我们能很容易写出在AC自动机上的dp, dp[ k ][ i ][ j ]表示走了 k 步从 i 走到 j 的最大值。 k 很大我们考虑矩阵优化, 直接搞就好啦。 不知道为什么在本机上M * M * M * M **** * M 打多了就会卡死不知道为什么。。。 阅读全文
posted @ 2019-05-31 23:03 NotNight 阅读(141) 评论(0) 推荐(0)
摘要:Bracket Substring 这么垃圾的题怎么以前都不会写啊, 现在一眼怎么就会啊。。。。 考虑dp[ i ][ j ][ k ][ op ] 表示 已经填了 i 个空格, 末尾串匹配到 所给串的 第 j 个, 已经放了 k 个左括号, 是否存在所给串的方案数。 因为不匹配的不是从头开始的, 阅读全文
posted @ 2019-04-29 16:48 NotNight 阅读(135) 评论(0) 推荐(0)
摘要:Tree-String Problem 网上的dfs + kmp 复杂度就是错的, 除非算出根据下一个字符直接转移Next数组直接转移, 而求出Next[ i ][ 26 ]数组和丢进AC自动机里面没有区别。。 然后我的AC自动机还写麻烦了。。 我把全部都求进去求fail然后沿着fail推到目标串, 阅读全文
posted @ 2019-02-20 13:44 NotNight 阅读(223) 评论(0) 推荐(0)
摘要:E - Exciting Menus 建个AC自动机求个fail指针就好啦。 阅读全文
posted @ 2019-01-15 14:02 NotNight 阅读(211) 评论(0) 推荐(0)
摘要:C - Tachibana Kanade's Tofu 思路:把 n 个串丢进AC自动机中,然后dp就好啦。 我的代码居然是在CF上跑最快的。。 阅读全文
posted @ 2019-01-01 20:45 NotNight 阅读(226) 评论(0) 推荐(0)
摘要:思路:直接在状态图上跑dp,最后枚举一下42种一下的。。 这个枚举有点恶心。 阅读全文
posted @ 2018-08-18 11:15 NotNight 阅读(141) 评论(0) 推荐(0)
摘要:思路:将能跑到的状态标记一下,在bfs搜一下就好啦。 阅读全文
posted @ 2018-08-17 16:40 NotNight 阅读(131) 评论(0) 推荐(0)
摘要:思路:我们先跟着它给定的字符串走把字典树建出来,求出fail指针,我们考虑两个字符串 A和B, 如果想要求B中有多少A的子串,转换一下就是有多少个B的前缀的后缀包含A,这个在AC自动机 的状态图中很容易表示,就是字符串B所占的结点中 有多少个结点顺着fail能到达A的尾结点, 并且fail构建出来的 阅读全文
posted @ 2018-08-17 15:28 NotNight 阅读(276) 评论(0) 推荐(0)
摘要:#include #define LL long long #define ll long long #define fi first #define se second #define mk make_pair #define PII pair #define y1 skldjfskldjg #define y2 skldfjsklejg using namespace std; cons... 阅读全文
posted @ 2018-08-17 10:49 NotNight 阅读(131) 评论(0) 推荐(0)
摘要:思路:建状态图,在状态图上dp。 阅读全文
posted @ 2018-08-17 10:21 NotNight 阅读(126) 评论(0) 推荐(0)
摘要:恶补了一下AC自动机,花了一天时间终于全部搞明白了。 思路:将每个人的串加入AC自动机,在AC自动机生成的状态图上建边,注意单词末尾的节点只能转移到自己概率为1, 然后将矩阵自乘几十次后误差就很小了, 或者可以高斯消元搞出精确解。 阅读全文
posted @ 2018-08-12 21:42 NotNight 阅读(183) 评论(0) 推荐(0)
摘要:只有失配链接 #include<bits/stdc++.h> #define LL long long #define ll long long #define fi first #define se second #define mk make_pair #define pii pair<int, 阅读全文
posted @ 2018-08-12 14:57 NotNight 阅读(149) 评论(0) 推荐(0)