线段树合并
Aaplloo
天天都想摆
展开
-
[CF208E] Blood Cousins (线段树合并)
题意 题目 输入一个森林。mmm 个询问 xxx 点的 ppp 代近亲。 思路 维护每个点的线段树,树上维护的是 xxx 子树区间深度节点个数,父节点合并上子节点的即可。 void Dfs(LL x,LL Fa) { Dep[x] = Dep[Fa] + 1; int l = G[x].size(); for (Int i = 0; i < l; ++ i) Dfs(G[x][i], x); } inline void Build() { for (Int i = 1; i <=原创 2020-06-02 21:09:22 · 162 阅读 · 0 评论 -
[HNOI2009]梦幻布丁(线段树合并)
题意 洛谷 题目大意为:每个位置有一个颜色,有两种操作。操作一是将所有 xxx 颜色都修改为 yyy 颜色,操作二是统计序列里有多少颜色段。 思路 思路其实很明显。我们可以用链表储存信息,用启发式合并保证操作二的时间复杂度即可。 然而我用的是线段树合并,思路很简单:就用 nnn 棵线段树维护每种颜色区间位置和答案即可,因为不同颜色之间是没有影响的。使用动态开点线段树然后进行线段树合并即可。 Code: LL Ans, Root[MAXN * 10], Son[MAXN * 18][2], SonQ[MAXN原创 2020-06-02 15:39:04 · 222 阅读 · 0 评论