树
陆小萌
这个作者很懒,什么都没留下…
展开
-
K叉哈夫曼树
定义:哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。K叉哈夫曼树:哈夫曼树的构造方法是贪心的每次选最小的几个节点构造。当K>2K>2K>2的时候需要预处理一下,因为可能最后一步合并操作的点数不到K个节点,这样的话就不是最优的了。K>2K>2K>2预处理方法:当remain=(n−1) mod (k−1)≠0remain=(n-1)~mod~(k-1)\neq 0remain=(n−1) mod (k−1)=原创 2020-09-14 22:00:54 · 1012 阅读 · 0 评论 -
树的直径
之前写过一篇学军信友队趣味网络邀请赛 B.齐心抗疫,那篇文章中讲述了一种通过两次dfs就足以求得树的直径的方法,今天来学习另一种方法求树的直径——树形DP。定义树的直径:若树上两点u,vu,v间的最短路径最大,那么该路径的长度称为树的直径。(可以存在多条)区别两者的复杂度都是O(N)O(N)O(N)方法1:简洁方便,只用求一次即可得到树的直径,适当修改一下树的直径的两端点也可以在求树的直径的时候记录下来。方法2:可以记录到端点的距离,有些题目会用到。1.树形DP求树的直径令fff数组记录当前原创 2020-09-07 14:15:36 · 175 阅读 · 0 评论 -
CF1336 A. Linova and Kingdom
A. Linova and Kingdom题意给你一颗nnn个节点根为1号节点的树,选kkk个城市作为工业城市,其余为旅游城市,工业城市的使节每经过旅游城市开心值+1,求所有工业城市的使节到1号节点的开心值的和最大为多少?思路贪心 dfs很容易看出来如果只选一个,一定选距离根节点最远的叶子,我们思考第四个为什么选2而不是3和4,因为选3和4,会减少其子树节点的开心值。(因为我们选这个点...原创 2020-04-16 16:32:03 · 1362 阅读 · 4 评论 -
CF1338 B. Edge Weight Assignment
CF1338 B. Edge Weight Assignment题意一棵n个结点的树,求最小和最大需要多少个不同的路径来构造树的路径权值,使得任意两片叶子的路径异或和为0。思路首先这是一棵无根树,以其任意一个叶子结点为根。(避免讨论)首先考虑最小,最小要么为1要么为3。为1的情况是任意结点到根节点的距离为偶数。为3的情况是只要有一个结点到根结点的距离为奇数。这里仅判断奇偶有两种写法...原创 2020-04-14 16:57:59 · 442 阅读 · 1 评论 -
NC14248
NC14248题意给定一棵n个点的树,问其中有多少条长度为偶数的路径。路径的长度为经过的边的条数。x到y与y到x被视为同一条路径。路径的起点与终点不能相同思路DFS 树 数据结构这道题和CF1339D十分相像,有兴趣的可以做一下。把题意转化为给你一颗n个结点的树,树上所有的边权值为1,求树上任意两点距离为偶数的点的个数。问题就转化为了如何获取树上任意两点的距离是否为偶数呢?图论相关...原创 2020-04-14 15:26:21 · 199 阅读 · 0 评论 -
NC13249
NC13249题意给你一棵树,每个节点iii上有一个值k[i]k[i]k[i],一开始树上所有节点均为白色,要求你每次选择一个白色节点染色,从该节点往根的链上小于k[i]k[i]k[i]的均被染色,求最小染色次数为多少?思路DFS 贪心首先叶子结点是一定要染色的,我们考虑如何返回的时候构造最优方案,我们维护两个数组。回溯路径所能染色到的最远距离k[x]=max(k[x],k[s]−1)...原创 2020-04-09 22:08:42 · 158 阅读 · 0 评论 -
学军信友队趣味网络邀请赛 B.齐心抗疫
学军信友队趣味网络邀请赛 B.齐心抗疫题意给你一棵每条边均为1的树,求任意两点距离乘两端点中大的那个数的乘积最大为多少?思路题意转化为公式就是求dis[x][y]∗max(a[x],a[y])dis[x][y]*max(a[x],a[y])dis[x][y]∗max(a[x],a[y])那么难点就在于求任意两点间的距离了。这时候要抓住条件:这是一棵树!利用树的直径的性质DFS三次即...原创 2020-04-06 01:21:01 · 478 阅读 · 0 评论