
dsu on tree
Wuliwuliii
谁无暴风劲雨时,守得云开见日明!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
小A的礼物【Dsu on Tree】
题目链接 求子树信息,这样一类的题目,往往可以使用Dsu on Tree这样的启发式合并的做法来实现。 我们直接对于轻儿子每次均不保留,并且先查轻儿子,再查重儿子,以此来满足时间复杂度。#include <iostream>#include <cstdio>#include <cmath>#include <string>#...原创 2020-04-08 20:38:47 · 154 阅读 · 0 评论 -
旗鼓相当的对手【Dsu on Tree】
题目链接 有很多细节上的东西,还是需要写的细一点,不然很容易wa掉的。 首先,以每个点作为子树的根结点来算贡献很容易发现,所以这里用一个Dsu的方法,使得的复杂度下降至。 然后dsu的过程一定要注意,要先算答案,再放入子树的贡献,当然算答案的时候,我们是要找对应的深度的结点。于是我们就能算到x的深度为但是,我们必须保证才能算它的贡献,因为这个等式算出来的deep[x]...原创 2020-03-28 21:31:09 · 321 阅读 · 0 评论 -
Summing in a Tree 【HackerRank - summing-in-a-tree】【Dsu on Tree】
题目链接 题意:有N个点,下标从0开始,问的是有多少个子树满足给出的H+1个条件,H代表深度(从0开始),每个深度要求对应的结点的个数是大于等于ai的,满足其一就要加入贡献。 思路:直接Dsu,但是由于重儿子上面的贡献会被直接储存,所以求重儿子的时候,我们需要的是直接加上他的答案即可。#include <iostream>#include <cstdio>...原创 2020-01-08 11:34:03 · 243 阅读 · 0 评论 -
Dominant Indices 【CodeForces - 1009F】【Dsu on Tree】
题目链接 题意:有N个点的树,现在我们查询以每个点作为子树的根,它的子树中每个深度包含的结点数目最多的深度是哪个深度,如果有多个深度的话,取最小的深度。 思路:由于是对于子树来进行询问的,这种时候最适合用Dsu on Tree来做了,直接维护最大深度结点个数以及对应的深度即可。#include <iostream>#include <cstdio>#i...原创 2020-01-06 21:26:40 · 311 阅读 · 2 评论 -
Tree and Queries 【CodeForces - 375D】【Dsu on Tree + 树状数组】
题目链接 现有一棵n个点的树,点的编号从1起,树以1为根,每个点i都一个颜色ci,接下来有m个询问,每次询问以vj为根的子树中,求有多少种颜色,这些颜色在子树中出现的次数至少为kj。 首先,想到是维护子树,我们就往Dsu上面靠,再者,又是要维护颜色个数大于等于K的,所以我们就要想办法把颜色维护,我的做法是,我们可以确定放进子树中的颜色的种类数,然后呢,我们现...原创 2020-01-06 20:46:06 · 283 阅读 · 0 评论 -
Tree Intersection 【CSU - 1811】【Dsu on Tree】
中南大学OJ 题目链接题意: 给定一棵树,它有n-1条边。如果把第i条边删掉之后,会形成两个联通块。你需要回答有多少种颜色同时出现在这两个联通块中。有不超过15组测试数据。 对于每组测试数据,第一行一个整数n,表示树的大小。 接下来一行n个数,表示每个节点的颜色。 接下来n-1行,表示第i条边,连接的两个节点。输出n-1行,表示删除第i条边之后,同时出现...原创 2020-01-04 16:52:41 · 429 阅读 · 0 评论 -
Blood Cousins 【CodeForces - 208E】【Dsu on Tree】
题目链接 在一个森林中,如果两个节点a和b向上的第p个祖先相同,就称他们为p代表亲。(跟日常生活中有所不同,p不一定是他们的最近公共祖先)。 给出一些询问,问v的p代表亲的数量。 我们肯定是要想办法把节点推到子树的根结点上面去,这样问题一转,就变成了求子结点的问题了,我们可以用倍增的方法,找到对应的祖先节点,然后就是我们将询问放到该节点上面来查询这棵子树即可。时间复杂度...原创 2020-01-04 16:14:33 · 161 阅读 · 0 评论 -
Blood Cousins Return 【CodeForces - 246E】【Dsu on Tree】
题目链接 给定一棵树,已知每个节点的父亲节点,和每个节点上的名字(字符串),对于每个询问vi,ki,求子树vi内v的kth层儿子(子树内比子树根深度大k层的部分)中不重复名字的个数。 首先,如果是用Dsu的话,需要注意到一种情况:5a 0a 1a 1a 1a 211 1ans:1 可以画一下图,不然会WA9,遇到这样的情况的话,我们需要考虑的是它在对应的深度...原创 2020-01-04 15:44:54 · 212 阅读 · 0 评论 -
Tree Requests 【CodeForces - 570D】【Dsu on Tree】
题目链接 一棵以1为根的树,每个节点上都有1个字母,有m个询问。每次询问v对应的子树中,深度为h的这层节点的字母,能否打乱重排组成回文串。根的深度为1,每个点的深度为到根(1)的距离。 由于在这里有Q次询问的话,并且又是对子树的询问操作,很容易让人不经意之间的往Dsu on Tree上去想。然后我们可以维护个used[maxN][26],代表的是每一种字符是否是奇数个,如果是奇数个的话...原创 2020-01-04 10:02:07 · 230 阅读 · 0 评论 -
Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths【Codeforces 741 D】【Dsu on Tree + 状压】
Codeforces Round #383 (Div. 1) D 着实难做! 首先,题意,题意不是一棵子树上任意构成!!! 题意: 问的是对应子树v,它上面的简单路径(链),所能构成的最长的回文长度。然后输出对应的1~N的所有以它为子树根结点的最长回文长度(不强制要求经过根结点)。 思路: 首先,我们考虑因为是可以打乱顺序的,所以,如果构成回文,要么有唯一一个符...原创 2019-12-30 22:27:34 · 821 阅读 · 0 评论 -
Lomsat gelral【Dsu on Tree】
http://codeforces.com/contest/600/problem/E 题意:有N个结点构成的一棵树,其中每个结点都有一个颜色,现在我们想知道每个结点的统治色是哪种或者哪几种颜色,如果存在多种统治色的话,就是这几种统治色的颜色权值和。 思路:这是一道Dsu on Tree的模板题,但是作为初学Dsu on Tree的小白,我还是想分享一下我的认知。 首先,Dsu的...原创 2019-12-30 09:52:25 · 220 阅读 · 0 评论 -
Little M's attack plan【2019徐州网络赛I题】【dsu on tree】
题目链接 比赛的时候,隔壁队队友carry,解决了我们提出的这个思路(当时真的是想出来但是真的敲不出来,代码能力有待提升……)但是,赛后队友的代码被我们hack了哈哈哈。 首先,这里的N特别的大,一开始跟队友想的是维护一个树分治,然后始终想不到怎么去维护那个这边的子树,对另一边的子树所造成的贡献怎么给它加回去,然后滑水一小时,“这绝对不是点分治!!!”,换思路,反正时间还早不是嘛!...原创 2019-09-10 15:33:58 · 330 阅读 · 2 评论 -
Path Queries【Codeforces Round #582 (Div. 3).G】【dsu on tree】
codeforces 1213 G 题目链接 昨晚上比赛的时候看到了这样的(u, v)对,就想到了这几天学的点分治,但是这里有个确实处理不了的问题,就是对已有点的贡献是不能反馈回去的,所以,到最后答案都是少的。 然后今天的时候,看到了题目中给的算法标签,,我就想到了,不如对所有的边升序排序,然后去dsu on tree(树上瞎搞),然后似乎就是可以求得答案了。 这里,先升序排序所...原创 2019-08-31 11:30:35 · 269 阅读 · 0 评论