树
cat_pikapikapi
这个作者很懒,什么都没留下…
展开
-
Tree Factory cf596div1D
给以一条链,每次可以把一个点变成它父亲的父亲儿子,问最少多少次可以变成给定的树? 考虑将一颗树变成一条链,那么就是把一个点变成兄弟的儿子。 而考虑最少需要多少步,每一次操作最多让树高加一,那么最少需要n-max(dep)-1次。 那么为了让操作次数达到最少,每次都必须更新最长链。 #include <bits/stdc++.h> using namespace std; ...原创 2019-11-20 15:34:05 · 91 阅读 · 0 评论 -
2019hdu多校六 Ridiculous Netizens(点分治)
大概题意是: 给你一颗无根树,每一个结点有点权, 有多少颗子树的结点乘积不超过m?子树的定义是树上的连通块。 首先我们考虑另一个问题,假设给你一颗有根树,所以包含根的子树有多少种满足乘积不超过m? 考虑树形dp的做法,定义dp[i][j]是在i被选取后这颗子树中乘积为j的子树方案数,这样每次将两颗子树合并的复杂度是m*m的。但实际上子树大小限制了状态数不会那么多,所以每次计算一个点的贡献的复...原创 2019-08-08 10:56:28 · 240 阅读 · 0 评论 -
DSU on tree CodeForces - 741D
dsu on tree 主要还是去学了一下这个东西,大概就是利用的轻重链的性质,把暴力的复杂度优化到了(nlogn)。非常神奇的算法。 题目还是略板的。 题目意思就是问每棵子树上有多少权值异或和为0或者二进制最多1个1的链。 #include <bits/stdc++.h> using namespace std; #define N 500005 #define go(...原创 2019-08-02 14:20:54 · 149 阅读 · 0 评论 -
HDU-6065 RXD, tree and sequence(dp+LCA)
主要利用了LCA 的性质——一个区间的LCA等于区间内相邻点的深度最低的LCA。 所以这个问题就转化成选取k个相邻点的深度 或 单点的深度。 #include <bits/stdc++.h> using namespace std; #define N 300005 #define go(i,a,b) for(int i=(a);i<=(b);i++) #define i...原创 2019-07-12 10:12:39 · 126 阅读 · 0 评论 -
E.F(cf div2 Round 66)
E.Ehab and the Expected GCD Problem 题意:对n的一个排列,使这个排列中前缀的不同gcd个数最大,问有多少种这样的排列? 思路:考虑gcd的衰减,所以第一个数一定有最多的质因子个数。那么它一定是形如2^x*3^y,(其中y<=1)。因为任何比3大的质数都至少可以提供2个2,而3^2可以提供3个2。 所以我们可以考虑如下的dp: dp[i][j][k]...原创 2019-06-04 06:47:46 · 134 阅读 · 0 评论 -
Coloring Tree
考虑这样一个推广问题:有一个无向图,给每个点染色,有k种颜色,任意两个距离<=d的点不能相同颜色,问有多少种染色方案 这个问题是不好解决的,但我们可以解决一些特殊的拓扑结构 如果是个链,那显然从左往右计算每个位置可以染多少种颜色然后乘起来就行了 如果是个树,那就是这个题目了,主要是要类比链的情况寻找一个合适的拓扑序进行计算,找这个拓扑序的关键就是轮到某个点x的时候,已经拓扑过的与x距离&...转载 2019-06-14 20:20:35 · 179 阅读 · 0 评论 -
Master of Data Structure Gym - 102220D(虚树)
题意:给以一颗有n个节点的树,给你m次操作。n<5e5,m<2000 操作有:对一条链加x,异或x,减x,求和,求异或和,求最大值减最小值,求和k最接近的数 思路:因为m只有2000次,所以需要操作的点不会特别多,可以参考离散化的思想,把重要的点建一颗虚树,虚树的大小是o(m)的。原树除了重要点之后剩下了一些链接重要点的链,我们可以把这些链缩成一个点,因为这些链上每个点的值都是相同...原创 2019-05-29 16:51:02 · 606 阅读 · 0 评论 -
洛谷p1399(基环树)
题意:给你一个只有一个环的图,让你选一个点(可以在边上),使得到最远点的最短路最小。 思路: 如果是一颗树的话,就是求树的直径/2。 如果是基环树的话,这道题显然不是基环树的直径,因为是到最远点的最短路的缘故。 那我们考虑最终解到其他所有点的最短路中,一定没有环,所以一定是一棵树。 所以我们枚举基环树所有可能出现的树,即枚举在环上去一条边,求树的直径。 显然最后,我们需要得到的很多解中...原创 2019-05-22 20:37:50 · 410 阅读 · 0 评论 -
Neko and tree HDU - 6540 (树形dp)
题意:给你一棵树,树上有一些重要的点,让你选一个只包含重要的点的点集,满足点集里最远的两个点不超过k,问有多少种选法 想了好久,题解说得太简略了。。。 dp[i][j]表示在i这颗子树中距离i点最远点距离为j的方案数。 考虑如何从子树转移,显然 我们遍历到一颗新子树时,要用之前的所有方案乘以这颗子树的方案来更新。 即dp[u][max(i,j+1)]+=dp[u][i]*dp[to][j...原创 2019-05-24 19:26:27 · 1218 阅读 · 3 评论 -
Awesome Shawarma Gym - 101991A(点分治)
Fouad has a raw awesome shawarma, and he is in a city which is represented as an undirected tree. He heard that there is a magical oven that will cook the Shawarma, to make it so delicious. However, I...原创 2018-12-12 14:43:44 · 260 阅读 · 0 评论