
dsu on tree
ACM败犬
这个作者很懒,什么都没留下…
展开
-
Codeforce 600 E. Lomsat gelral(树上启发式合并)
题目大意:给你1号点为根节点的树,树上每个点有一个颜色值,定义一个结点的支配色:该结点的为根的子树内出现次数最多的颜色。一个结点的支配色可能有好几个,求每个节点的支配色的出现次数之和。 算法标签:dsu on tree 题解:树上启发式合并裸题。如果暴力统计答案 需要 O(n2)O(n ^ 2)O(n2)来统计每个结点的答案。考虑用空间换时间,对每个颜色开一个桶,父节点的答案由子结点的答案合并得...原创 2019-08-31 10:29:54 · 219 阅读 · 0 评论 -
Codeforce 570 D. Tree Requests(dsu on tree)
做法有很多。 重新排列之后构成回文串,相当于最多只有1个字符出现奇数次,由于只有26个字母,可以状压用 0 1表示每个字母出现是奇数次还是偶数次。 先考虑暴力:显然可以将询问离线,可以暴力去维护每一个点作为根节点每一个深度的信息,然后回答这个点的所有问题。 然后注意到一个点的信息可以由子节点合并得到,这里就可以用dsu on tree了。 另外一种做法:对每个深度开一个桶,将点按dfs序存入对...原创 2019-09-05 10:47:05 · 145 阅读 · 0 评论 -
Codeforce 741 D. Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths (dsu on tree)
题目大意:(来源 : https://www.luogu.org/problem/CF741D) 若排序后能变成一个回文串,则路径上最多只有一个字符出现奇数次,用0 1 表示每个字符出现是奇还是偶。 dfs预处理每个点到根节点的所有字符出现状态 和 距离。当前点 为 i 时,最长路径要么经过 i,要么在 i 的子树中, 后者是一个子问题,可以用 dp 记录一下。 考虑经过 i 的最长路径怎么解...原创 2019-09-05 13:07:23 · 431 阅读 · 0 评论 -
Codeforce 1009 F. Dominant Indices (dsu on tree)
题目大意:(来源:https://www.luogu.org/problem/CF1009F) 题意转化为:找一个最大的 d(x,j),如果有多个,找最小的那个。 预处理一下每个点距离根节点的距离,可以O(n2)O(n^2)O(n2)暴力:暴力遍历以 xxx为根的整颗子树,维护xxx 子树里每个深度的点的个数,动态更新答案 resresres,最后xxx点的答案 = res−deep[x]re...原创 2019-09-05 14:22:48 · 167 阅读 · 0 评论 -
Codeforce 375 D. Tree and Queries (dsu on tree)
题目大意:(来源:https://www.luogu.org/problem/CF375D) 询问的是子树内的问题,一种做法是搞出每个点的dfs序,然后直接树上莫队。 还有dsu on tree的做法,维护一下每个颜色出现的次数,然后用线段树或树状数组之类的数据结构维护一下每个出现次数的颜色之和/ #include<bits/stdc++.h> using namespace ...原创 2019-09-05 15:31:01 · 259 阅读 · 0 评论