摘要: 作者注:搭配理论证明类的$SAM$博客阅读,效果更佳。作者水平较低,时间有限,只讲实现,不再胡乱证明。 后缀自动机是一种在线的,动态添加字符扩展字符串的算法。蒟蒻深知没图的痛苦,这里放一个带详细图片解析的代码实现,加深一下自己印象。~~顺便造福后人~~ 作图工具:$WPS$ $PowerPoint$ 阅读全文
posted @ 2019-02-27 23:38 maomao9173 阅读(1543) 评论(8) 推荐(16) 编辑
摘要: 可持久化$01Trie$。感觉不是很会写,改天复习完主席树会再来学一次。 cpp include using namespace std; const int N = 600010; int s[N], rt[N], cnt[N 25]; int max_size = 1, ch[N 25][2]; 阅读全文
posted @ 2019-02-27 17:41 maomao9173 阅读(109) 评论(0) 推荐(0) 编辑
摘要: "题目链接 $Click$ $Here$" 李超线段树的模板。但是因为我实在太$Naive$了,想象不到实现方法。 看代码就能懂的东西,放在这里用于复习。 阅读全文
posted @ 2019-02-27 16:23 maomao9173 阅读(163) 评论(0) 推荐(0) 编辑
摘要: "题目链接 $Click$ $Here$" $01Trie$好题~~裸题~~。 取节点$1$为根节点,向下扫每一个点从根节点到它路径上的异或和,我们可以得到一个$sumx[u]$。 现在路径异或和有两类: 跨过根节点,这种的异或路径长度等于两个子节点的$sumx$异或和异或起来的数值大小 在一棵子树 阅读全文
posted @ 2019-02-27 10:41 maomao9173 阅读(106) 评论(0) 推荐(0) 编辑
摘要: "题目链接 $Click$ $Here$" 好久没写$DP$了真是水平下降不少,一眼把这个题搞成贪心了,然后一发交上只有$37$分$QwQ$ 这个题好像还可以$AC$自动机胡搞?不过这里$DP$就已经很简洁易懂易想了。对每一个已经完成完整前缀匹配的点,它可以向更深的地方去找,也可以跳回原点去进行下一 阅读全文
posted @ 2019-02-27 09:31 maomao9173 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 本来想找$01Trie$的结果找到了一堆字典树水题。。。算了算了当水个提交量好了。 直接插入模式串,维护一个$Trie$树的子树$sum$大小,求解每一个文本串匹配时走过的链上匹配数和终点处的子树大小之和。 cpp include using namespace std; int top, sta[ 阅读全文
posted @ 2019-02-27 08:11 maomao9173 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 字典树裸题。每次插入询问串,查询的时候拿出来直接查,信息保留在节点上。 cpp include using namespace std; char s[51]; int n, m, max_size = 0; int ch[500010][27], sum[500010]; void add_str 阅读全文
posted @ 2019-02-27 07:43 maomao9173 阅读(87) 评论(0) 推荐(0) 编辑
摘要: 正解其实是$Tarjan$ + $拓扑拓扑$,但是却可以被$O(N^3 / 32)$复杂度的传递闭包水过去。心疼一下写拓扑的小可爱们。 学到一个$bitset$优化布尔图的骚操作,直接压进去乱搞,能快不是一点。 (基本上就是差了一个$log$) 先放代码。 cpp include using nam 阅读全文
posted @ 2019-02-27 00:18 maomao9173 阅读(190) 评论(0) 推荐(0) 编辑