随笔分类 -  字符串

摘要:建立一个回文自动机,然后开一个桶遍历一下回文树就好了. code: #include <cstdio> #include <vector> #include <string> #include <cstring> #include <algorithm> #define N 500007 using 阅读全文
posted @ 2020-01-02 08:09 EM-LGH 阅读(159) 评论(0) 推荐(0)
摘要:就是喜欢后缀自动机,yy了一个只用后缀自动机解决的方法. 对 3 个串建立广义后缀自动机,然后建立后缀树. 标记出每个点在0/1/2个串中是否作为子串出现,然后将后缀树中 2 串结尾的所有子树都设为危险节点. 然后对于 SAM 来一个拓扑序DP,我们开始的时候默认危险节点的最大值是 -inf,然后 阅读全文
posted @ 2019-12-31 08:52 EM-LGH 阅读(187) 评论(0) 推荐(0)
摘要:绝对是我写过最长的一份代码了. 这个快敲吐了. 通过这道题能 get 到一个套路: 两颗树同时统计信息的题可以考虑在个树上跑边分治,把点扔到另一颗树的虚树上,然后跑虚树DP. 具体地,这道题中我们发现 $LCP$ 长度是反串后缀树 $LCA$ 深度,$LCS$ 是正串后缀树 $LCA$ 深度. 我们 阅读全文
posted @ 2019-12-27 15:48 EM-LGH 阅读(246) 评论(0) 推荐(0)
摘要:思路不难,但是细节还是挺多的,要格外注意一下. code: #include <cstdio> #include <queue> #include <cstring> #include <algorithm> #define N 2005 #define ll long long #define m 阅读全文
posted @ 2019-12-23 20:43 EM-LGH 阅读(200) 评论(0) 推荐(0)
摘要:裸题,敲完后没调就过了 ~ code: #include <bits/stdc++.h> using namespace std; #define ll long long #define lson t[x].ls #define rson t[x].rs #define setIO(s) freo 阅读全文
posted @ 2019-11-28 14:24 EM-LGH 阅读(161) 评论(0) 推荐(0)
摘要:联赛前练练码力. code: #include <vector> #include <cstdio> #include <cstring> #include <algorithm> #define N 200006 #define ll long long #define lson t[x].ch[ 阅读全文
posted @ 2019-11-10 10:59 EM-LGH 阅读(264) 评论(0) 推荐(0)
摘要:特别神的一道题. 有一句话要反复揣摩:题中给的所有点构成一个多边形!! 而且读入还是按照多边形的轮廓读进来的!!! 我们知道,如果对称轴确定的话判定条件是对应角相等且对应边相等. 所以把相邻边夹角和边长看成二元组,然后倍长原串,跑一个 $mancher$ 求几个串的回文半径最大就行了. 代码就不贴了 阅读全文
posted @ 2019-11-08 16:19 EM-LGH 阅读(116) 评论(0) 推荐(0)
摘要:太累了,刷刷水~ code: #include <bits/stdc++.h> #define N 500005 #define LL long long #define setIO(s) freopen(s".in","r",stdin) using namespace std; char str 阅读全文
posted @ 2019-11-02 16:25 EM-LGH 阅读(184) 评论(0) 推荐(0)
摘要:并不是很难啊,把细节想好了再写就很轻松了~ code: 阅读全文
posted @ 2019-11-01 19:36 EM-LGH 阅读(152) 评论(0) 推荐(0)
摘要:水水的字符串题 ~ 阅读全文
posted @ 2019-10-30 17:19 EM-LGH 阅读(163) 评论(0) 推荐(0)
摘要:求树上两条路径的 LCP (树上每个节点代表一个字符) 总共写+调了6个多小时,终于过了~ 绝对是我写过的最复杂的数据结构了 我们对这棵树进行轻重链剖分,然后把所有的重链分正串,反串插入到广义后缀自动机中. 求 LCP 的话就是后缀树中两点 $LCA$ 的深度. 如果 $LCP$ 的长度小于两个重链 阅读全文
posted @ 2019-10-22 20:38 EM-LGH 阅读(244) 评论(2) 推荐(1)
摘要:这个好神啊~ code: 阅读全文
posted @ 2019-10-15 18:19 EM-LGH 阅读(108) 评论(0) 推荐(0)
摘要:这个模型以前绝对见过,模拟赛的时候开始敲了一个AC自动机,纯属脑抽~ code: 阅读全文
posted @ 2019-10-10 14:25 EM-LGH 阅读(145) 评论(0) 推荐(0)
摘要:现在看这道题也不难啊,不知道考场上为啥没切~ code: 阅读全文
posted @ 2019-10-09 16:06 EM-LGH 阅读(205) 评论(0) 推荐(0)
摘要:这题解法很多,简单说几个: 1. 线段树合并,时间复杂度是 $O(nlog^2n)$ 的. 2. 暴力跳 $fail,$ 时间复杂度 $O(n\sqrt n),$ 比较暴力. 3. 建立后缀树后在 $dfs$ 序上数点,时间复杂度为 $O(nlogn),$ 十分优秀. Code: 阅读全文
posted @ 2019-09-24 11:15 EM-LGH 阅读(183) 评论(0) 推荐(0)
摘要:思路比较直接. 由于 $n$ 很小,直接定义 $f[i][j]$ 表示当前在自动机中的节点 $i,$ 被覆盖串的集合为 $j$ 的方案数. 阅读全文
posted @ 2019-09-19 19:07 EM-LGH 阅读(164) 评论(0) 推荐(0)
摘要:这道题还比较友好~首先,构建出来 $AC$ 自动机,那么我们要求的就是从 $0$ 号点走无限次走到一个终止节点的概率. 考虑构建转移矩阵 $M,$ $M_{i,j}$ 表示节点 $i$ 转移到节点 $j$ 的概率. 如果 $i$ 不是终止节点,则直接将概率相加即可,否则,只有 $M_{i,i}$ 为 阅读全文
posted @ 2019-09-18 09:41 EM-LGH 阅读(171) 评论(0) 推荐(0)
摘要:思路肯定是没有问题,但是不知道为啥一直 TLE 两个点~ 阅读全文
posted @ 2019-09-16 08:19 EM-LGH 阅读(234) 评论(0) 推荐(0)
摘要:刷刷水~ Code: 阅读全文
posted @ 2019-09-07 00:39 EM-LGH 阅读(160) 评论(0) 推荐(0)
摘要:比较考验对后缀自动机构建过程的理解. 之前看题解写的都是树链的并,但是想了想好像可以直接撤销,复杂度是线性的. 自己想出来的,感觉后缀自动机的题应该不太能难倒我~ 注意:一定要手画一下后缀自动机的构建过程,然后看着自己画的图一步一步模拟即可. Code: 阅读全文
posted @ 2019-08-30 20:26 EM-LGH 阅读(196) 评论(0) 推荐(0)