专栏文章
题解:CF2035F Tree Operations
CF2035F题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miqdp7i6
- 此快照首次捕获于
- 2025/12/04 03:07 3 个月前
- 此快照最后确认于
- 2025/12/04 03:07 3 个月前
可以说是官解的中文翻译了。
目标是使所有节点的权值变为 。
最重要的是想到,如果 次操作可以达到目标,那么 次操作也可行。
证明:在 次操作的基础上先用 次操作将所有节点变为 ,再用 次操作把所有节点都变为 。
这说明 , 次操作对达到目标具有单调性。(后面将证明总是有解的)。
容易得到做法:遍历 ,对集合 二分最小的能达到目标的 (之后会证明二分的上下界,感性上来讲上界不会太大,上界到 次可过)。
对于二分的检查函数,可以通过 的树型 dp 来完成。
- 假设当前的检查的操作数为 。 地计算所有节点的操作数,定义节点 的操作数为 。
- 定义使以 为根节点的子树变为 的额外操作数为 。使以 为根节点的子树变为 的总操作数为 。
- ,。 - ,必然会有多余的操作,两次多余的操作间可以抵消,所以 。 - 检查 是否等于 ,等于 说明操作次数为 可行。
本题可以通过确定二分上下界优化成 。同时能证明总是有解。
先解决一个更为简单的问题。使树上所有节点的权值不大于 的最小操作数。与上述树形 dp 的流程大致相同,只是当 时令 。
可以二分出一个下界 。同时对于原问题, 次操作后可以令原树的节点的权值全部变为 或 ,原问题的下界肯定不小于 ,这很显然。且上界不大于 。接下来仅考虑最坏情况。考虑将所有节点的权值变为同一个数。
- 定义所有节点的权值和的奇偶性为树的奇偶性。每 次操作可以令整棵树的节点翻转。如果每 次操作,除了根节点 以外的节点全部翻转,那么会多出一次操作能用来使另一个节点保持原状,从而改变奇偶性,从而可以接近所有节点权值相同的情况。那么,此处最多为大致 次操作。
- 而如果此时 与其他值都不同。可以通过最差 次操作改变:不改变 ,改变一个节点 次。如果全部是 ,再通过 次操作变为 。
确定上下界后和原来一样二分就好。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...