CodeTON Round 5 (Div. 1 + Div. 2, Rated, Prizes!)
E. Tenzing and Triangle
题意
在网格图 范围内有一些格点,每个点有点权。每次可以以 为斜边,圈定一个等腰直角三角形,消除范围内的点的点权,代价为 乘直角边长。也可以以某点点权为代价,消除该点。 问消除所有点的最小代价。
题解
我们用斜边表示选择的三角形,它们一定是不相交的。记 表示三角形 覆盖的点权和减去 。那么,我们的任务是选择一些区间 来最大化 。
令 表示区间 时 的最大值。考虑转移:
- 没有被覆盖,
- 被 覆盖,
我们维护 。从 向 转移时, 作如下修改:
- 减去
- 对每个点 ,令 加上该点点权
用线段树维护。
代码
1 |
|
F. Tenzing and Tree
题意
给定一棵树,点有黑白两种颜色。每条边的权值被定义为边两侧连通块黑点数量之差的绝对值。对于黑点数量为 ,要求最大化所有边权值之和。
题解
钦定 为黑点的重心。那么权值之和为
而每个点会对其所有祖先的子树大小作出贡献,所以贪心地令所有黑点深度尽可能小。
但如何保证令黑点深度尽可能小后原先钦定的根是黑点的重心呢?事实上,我们可以枚举所有点为根。对于它不是重心的情况,答案一定更差,所以不会影响最终结果。
代码
1 |
|
CodeTON Round 5 (Div. 1 + Div. 2, Rated, Prizes!)
https://je3ter.github.io/2023/06/27/ACM/CodeTON Round 5 (Div. 1 + Div. 2, Rated, Prizes!) - 副本/