专栏文章
题解:CF2143C Max Tree
CF2143C题解参与者 2已保存评论 2
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @minuvoi2
- 此快照首次捕获于
- 2025/12/02 08:44 3 个月前
- 此快照最后确认于
- 2025/12/02 08:44 3 个月前
讲一种不同于官方题解但容易写的做法。
题目要求所有边的贡献和最大,可以贪心的想到让每条边的贡献都为 。显然,对于题目中的任何情况都可以做到让每条边的贡献都为 。我们观察一下边做贡献的条件:
如果 ,赋值时我们就令 ,否就令则 ,这样,我们就把边的属性转化为了点权间的关系。
然后考虑用 DFS 处理这些关系,以节点 为根遍历整棵树,并钦定 。当我们走到点 ,接下来枚举所有与 相连的边(与父亲相连的边除外),并设与这条边相连的另一个点为 。根据这条边的信息,我们也可以像上面那样处理出 和 的大小关系。注意, 不一定就是这条边的 。
- 当 时,我们勒令 ;
- 当 时,我们勒令 ;
另开数组 表示付给点的权值。这样,我们就将 处理成了一个将 到 依次赋给数组 的优先级(也就是所有 间的大小关系), 越大, 便越大。当两点 有 时, 和 谁大谁小都行。这样一来,问题便迎刃而解,不太明白或不会实现的可以看我代码。
再说一些实现小细节。因为 不一定就是正在处理的边的 ,也可能是他的 ,所以要分情况讨论,在写 DFS 的时候注意一下。
相关推荐
评论
共 2 条评论,欢迎与作者交流。
正在加载评论...