CF #722 Div2题解

看起来我的英文水平没有太差嘛

C

开局先看C,没有思路,猜了一个结论,对于一个节点u,取值 (x in [a_u,b_u]) 的时候子树贡献最大,那么总会有令 (x = a_u)(x = b_u) 的时候答案不会更劣。感性理解一下感觉没毛病,因为若移动后可以想到对于 u 的儿子们 v,考虑儿子们的取值与 u 的取值。可以放到数轴上考虑。发现若移动不会使答案变大,那么显然 x 可以取 (a_u)(b_u) 。若有变化,可以发现答案类似于一个二次函数里 (a < 0) 的图像。在两边可以取到最大值。

根据这个结论,可以容易的写出树形dp,用了11min就过了这道题……希望不要FST。

UPD:没有FST诶!

B

然后看B,不会……

最后发现所取数列的正整数不超过 1 个,也好理解,毕竟两个正整数的差肯定小于最大的那个数了。这样只需要考虑一下我们选不选最小的正整数即可,容易证明,选择最小的正整数比选择其他正整数不会更劣。如果我们发现我们需要舍弃某些负数才能选择该正整数,则不选择它,因为选择它对答案的贡献为 (1-舍弃的数的数量) ,必然非正。

43min的时候才过B,wtcl!

A

然后看A,一眼又不会qwq。

最后发现实际上我可以把不是最小元素的元素全都删掉,那就很好写了,在49min的时候过掉了这道题。

D

D随便手玩几个数据试图去oeis上找,然后估计是手玩错了没找到qwq。推了一下发现 (f_i = d(i) + sumlimits_{j=1}^{i-1}f_j),调和级数处理一下d然后直接递推就好了。

过得时候已经1:09min了qwq

E

E题随缘做了。考虑反图,发现建不出来。考虑最大团实际意义,是A树上的一条链,取最多的点使其在B树上没有祖先-后代关系。

可以发现,对于这些点,在B中深度越深越好,那么我们DFS A树,对于每个DFS到的点u,我们考虑他在B树的子树中有没有选中点,如果有的话我们放弃选择u,因为必然不会更优。如果没有,我们选择u。再考虑在B树中,从u到根这条链上有没有被选择的点。若有的话必然是选择u更优,将其删除。

每次DFS完一个节点后将修改还原回去即可。

最后在2:07的时候终于过了。

F

并没有去看F是啥。