CF 208E. Blood Cousins [dsu on tree 倍增]】的更多相关文章

题意:给出一个森林,求和一个点有相同k级祖先的点有多少 倍增求父亲然后和上题一样还不用哈希了... #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <vector> using namespace std; typedef long long ll; #define pii pair<int, int> #de…
208E - Blood Cousins 题目:给出一棵树,问与节点v的第k个祖先相同的节点数有多少个. 分析: 寻找节点v的第k个祖先,这不就是qtree2简化版吗,但是怎么统计该祖先拥有多少个深度为k的儿子? 我们可以对于深度为d的所有节点放到一个数组中,这时需要知道的是深度为d的数组中某个连续区间都属于该子树的长度. 某棵子树的信息?这时可以考虑一下dfs序列... dfs序列把整棵子树放在同一个区间,不懂dfs序的可以做做这两题: BZOJ 1103 [POI2007]大都市meg,BZ…
208E - Blood Cousins 题意 给出一棵家谱树,定义从 u 点向上走 k 步到达的节点为 u 的 k-ancestor.多次查询,给出 u k,问有多少个与 u 具有相同 k-ancestor 的节点. 分析 设 rt 为 u 的 k-ancestor.问题可以转换成在以 rt 为根的子树下,有多少个节点的深度与 u 相同. 预处理出离 u 距离为 k 的祖先 rt . 我们可以把所有的查询用向量存起来(祖先节点,要查询的节点的深度,对应查询的id),在遍历到某个祖先节点时,统计…
传送门 题目大意: 小C喜欢研究族谱,这一天小C拿到了一整张族谱. 小C先要定义一下k-祖先. x的1-祖先指的是x的父亲 x的k-祖先指的是x的(k-1)-祖先的父亲 小C接下来要定义k-兄弟 x的k-兄弟指的是与x的k-祖先相同的人 如果不存在k-祖先那么x没有k-兄弟 小C想问问你,x到底有多少k-兄弟?小C打算问Q次这样的问题. 数据范围: $n<=10^5,Q<=10^5$ $dsu\ on\ tree$ 基础题,当然也有显然的在线做法 对于每个询问 $(x,k)$,不妨转换为 $(…
解题思路 \(dsu\) \(on\) \(tree\)的模板题.暴力而优雅的算法,轻儿子的信息暴力清空,重儿子的信息保留,时间复杂度\(O(nlogn)\) 代码 #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<set> using namespace std; const int…
题意: 一个森林,求k级后代中多少种不同的权值 用set维护每个深度出现的权值 一开始一直在想删除怎么办,后来发现因为当前全局维护的东西里都是当前子树里的,如果要删除那么当前一定是轻儿子,直接清空set就行了没关系不会把一些要保留的也删除了 哈希直接上map #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <vector>…
倍增求出祖先,\(\text{DSU}\)统计 本来想用树剖求\(K\)祖,来条链复杂度就假了 #include <cstring> #include <cstdio> #include <algorithm> #include <cmath> #include <iostream> #include <numeric> #define R(a,b,c) for(register int a = (b); a <= (c); +…
246E - Blood Cousins Return 题意 给出一棵家谱树,定义从 u 点向上走 k 步到达的节点为 u 的 k-ancestor,每个节点有名字,名字不唯一.多次查询,给出 u k,问以 u 为根节点的子树下有多少个深度为 dep[u] + k 的节点(dep[u] 为节点 u 的深度). 分析 和208E - Blood Cousins几乎相同,把那题的 \(C\) 数组换成一个 \(set\) 数组,表示某子树下同一深度所有名字的集合. code #include<bit…
[cf contest246] E - Blood Cousins Return time limit per test 3 seconds memory limit per test 256 megabytes input standard input output standard output Polycarpus got hold of a family tree. The found tree describes the family relations of n people, nu…
D. Arpa's letter-marked tree and Mehrdad's Dokhtar-kosh paths CF741D 题意: 一棵有根树,边上有字母a~v,求每个子树中最长的边,满足这个边上的所有字母重拍后可以构成回文 发明者自己出的题...orz 由于本来知道就是dsu on tree,所以还是想出来了 首先点分治是没法做了,这是有根树 写成二进制,两条链合起来构成回文\(\rightarrow\)异或和为0或者只有一位是1 一开始困惑于只处理到当前根的异或和的话,随着当前…