11.19题解
A. 植树
很明显的二分答案,二分出来,就是一个线段覆盖问题,贪心的想,假如我有一个点没被左边的树覆盖到,那么我期望右边覆盖到他的那棵树尽可能靠后,然后做一下就行了。
B.树树修剪
考虑一个 dp,你一个点的答案是他有没有父亲相关的,所以我们可以说 \(f_u\) 是父亲要选这个点 u 的最大答案,那更新答案的时候,我们可以枚举这个点的度数,然后贪心去取儿子中最大的几个。
至于答案统计,我们同样对于每个点,可以枚举他作为选出来那个树的根时他的度数,然后也是贪心的做。
为什么出场上会想到换根啊。
C. 简单的数据结构题
考虑这个最小权大于等于 y 的条件如何刻画,可以想到并不能用 kruskal 重构树来刻画,那么我们就有了两棵树,一颗原树,一颗重构树。我们如果在重构树上倍增到了一个点 \(u'\),那么要操作的点既在 u 的子树内,也在 \(u'\) 的子树内,如果用 dfn 序来刻画,就是一个二维的区间加,然后单点查,差分一下就是单点加,区间查。
但是我们是带修的,相当于是二维数点再加上时间维度,这并不好做。
最暴力的就是直接树套树维护二维信息,但这显然太烂了。
你考虑到如果我对于一个询问处理,那么我就要考虑到前面的所有修改,这很像一个点对点关系,我们可以考虑 cdq 分治。
我在考虑跨区间的时候,就变成了先是一堆修改,然后查询一些东西的形式,然后你发现这就是离线二维数点。
D. 化合物
贪心地想,我肯定是不断把一个点往一边换,如果换不动了,那就把卡住的那个点使劲往一边换。
那么最终,我会是一个

浙公网安备 33010602011771号