随笔分类 - 图论--树上差分
摘要:前言 这个题还有个加强版:BSOJ6376【11.05模拟】草莓 大概是人均场切了。 题目 CF1000G Two-Paths 分析 首先这个路径一定是一条链加上若干回路的路径。 每次 \(x\) 到 \(y\) 的途中都可以进入子树进行获取贡献,为了尽可能大,我们可以先 \(dp\) 出每一个点到
阅读全文
摘要:题目 P5327 [ZJOI2019]语言 分析 线段树合并+树上差分。 首先我们发现答案其实就是:对于每一个点来说的连通块大小之和。 那么现在问题在于怎么来维护这个连通块的大小。 我们可以考虑对每一个点开一个线段树,保存:\(dfn\) 序列对应的点被路径覆盖次数和长度。 然后对于这样一类树上路径
阅读全文
摘要:题目 P4175 [CTSC2008]网络管理 树上单点修改,查询路径第 k 大。 解答 这道题做法很多,有 树剖+线段树+平衡树+二分 的,也有 树剖+可持久化线段树+树状数组 的,也有 可持久化线段树+差分+树状数组 的,还有就是 整体二分+树剖 的。 复杂度都是几个 \(log\) 的做法。
阅读全文
摘要:CF163E e-Government(AC 自动机+ BIT + dfn 序 + LCA + 序列上差分) 这么多东西搞在一起其实也没有很难。。 其实我们可以发现,题目就是让我们求每一个串作为某个串的子串出现次数之和。(好像更难理解了。) 看一下样例就知道了.. input: 1 3 a aa a
阅读全文
摘要:P2336 [SCOI2012]喵星球上的点名(AC 自动机 + BIT + dfn 序 + LCA ) 这道题除了 AC 自动机中 Fail 树本身的性质,与其他题目最大不同是它 AC 自动机的建立。 这道题的字符集特别大,所以我们不能和以前一样直接存下来,于是可以想到用 Map 维护每个点可以到
阅读全文
摘要:P5840 [COCI2015]Divljak(AC自动机+LCA+BIT) 我们发现对 \(T\) 集合建 AC 自动机非常的不好做(又要动态),所以我们考虑对 \(S\) 建 AC 自动机,然后每个 \(T\) 加入的时候都相当于修改一些节点的权值。 这里我们可以差分一下,把求点转化成求子树和,
阅读全文
摘要:P2414 [NOI2011] 阿狸的打字机 首先根据题意模拟可以建出 AC 自动机。 然后我们发现,对于每一个询问 \((x,y)\) ,对于 AC 自动机来说,其实就是在询问在 Fail 树上以 \(x\) 为根的子树内,有多少个 \(y\) 的前缀的标记。 解释一下为什么:因为一个结点 \(x
阅读全文
摘要:【模板】AC自动机(二次加强版) 【模板】AC自动机(二次加强版) 对于 \(S\) 的每一个前缀,先在对应位置打上标记(因为 AC 自动机 Fail 的性质),然后我们对 Fail 树来一遍拓扑排序,类似树上差分的思路,不停地累计即可(为什么能累计:因为 AC 自动机 Fail 的性质)。 扩展
阅读全文
摘要:【模板】AC自动机(二次加强版) 【模板】AC自动机(二次加强版) 对于 \(S\) 的每一个前缀,先在对应位置打上标记(因为 AC 自动机 Fail 的性质),然后我们对 Fail 树来一遍拓扑排序,类似树上差分的思路,不停地累计即可(为什么能累计:因为 AC 自动机 Fail 的性质)。 扩展
阅读全文
摘要:BS4150【NOI2014模拟17】花园(树剖,线段树,差分) 这道题可以差分然后线段树询问来做,同时也可以直接树剖然后在线段树内部用 set 维护。 可知线段树树高严格 \(logn\) ,所以单次修改是 \(O(log^3n)\) ,查询是 \(O(log^2n)\) ,1e5的数据比较卡,可
阅读全文
摘要:P3302 [SDOI2013]森林 P3302 [SDOI2013]森林 这道题加强版,多了连边的操作,强制在线。 考虑在那题的基础上怎么做这个题。 于是我们现在只需要解决操作2,我们发现其实我们维护的本质就是一棵棵主席树,而且这些主席树大小的总量一定。 再加上这道题没有删边,于是我们可以考虑启发
阅读全文
摘要:P4592 [TJOI2018]异或 P4592 [TJOI2018]异或 给定一棵树,每次询问一个子树的每个点与 z 的异或最大值,或者询问一条路径上每一个点和 z 的异或最大值。 同样的,这道题也可以直接 树剖+ 可持久化01Trie 来解决。 但是我们可以考虑更好一点的办法: 和之前那道题一样
阅读全文
摘要:P2633 Count on a tree P2633 Count on a tree 给定一棵树,询问树上两点路径的第 k 小,强制在线。 可以直接树剖然后主席树,复杂度俩 \(log\) 。 这里主要是一个数据结构维护树上前缀信息的技巧。 想一想我们求树上两点距离怎么求的? \(dist(u,v
阅读全文

浙公网安备 33010602011771号