随笔分类 - 图论--树链剖分
摘要:A - Cookie Exchanges 看到这种题一般能想到直接枚举一定次数,不行就输出无解。 可以证明是 \(\log n\) 次,没想过证明。 B - Unplanned Queries 观察样例容易发现,或者这类题我好像见过类似的,结论就是如果所有端点都被取偶数次,那么就是可行的,反之不行。
阅读全文
摘要:前言 这个题还有个加强版:BSOJ6376【11.05模拟】草莓 大概是人均场切了。 题目 CF1000G Two-Paths 分析 首先这个路径一定是一条链加上若干回路的路径。 每次 \(x\) 到 \(y\) 的途中都可以进入子树进行获取贡献,为了尽可能大,我们可以先 \(dp\) 出每一个点到
阅读全文
摘要:题目 据传是什么毛毛虫树,实际上可以转化成一道原题。 分析 首先这个划分感觉很$LCT$,但是也可以树剖。 想到可以打时间戳,然后树剖维护“相邻两个数相同的对数”即可。 这里可以直接维护,同时也有一个转化:数颜色段数。 前者稍微麻烦,后者直接就是原题P2486 [SDOI2011]染色。 时间复杂度
阅读全文
摘要:题目 SP6779 GSS7 - Can you answer these queries VII 分析 明显可以树剖/\(LCT\),转化成经典问题:区间动态查询最大子段和。 树剖的话无非是每次求完了还要把 \(log\) 个区间再拼起来。 \(LCT\) 的话就只拼数据结构上的了(指 \(Spl
阅读全文
摘要:题目 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\) 加入的时候都相当于修改一些节点的权值。 这里我们可以差分一下,把求点转化成求子树和,
阅读全文
摘要:CF1437G Death DBMS(AC自动机+树剖) 修改就是直接在建出来的 Fail 树上的对应 \(endpos\) 处修改(对应后文的单点修)。 重点是询问,考虑这个询问对应到 AC 自动机上面是什么:当前串的子串 >当前串每一个前缀的 Fail 树上的祖先。 也就是说就是询问一个点到根的
阅读全文
摘要:CF877E Danil and a Part-time Job 树剖然后线段树维护即可,维护取反操作本质就是交换 01 的个数即可。 代码: #include<bits/stdc++.h> using namespace std; template <typename T> inline void
阅读全文
摘要:BS4150【NOI2014模拟17】花园(树剖,线段树,差分) 这道题可以差分然后线段树询问来做,同时也可以直接树剖然后在线段树内部用 set 维护。 可知线段树树高严格 \(logn\) ,所以单次修改是 \(O(log^3n)\) ,查询是 \(O(log^2n)\) ,1e5的数据比较卡,可
阅读全文

浙公网安备 33010602011771号