zoukankan      html  css  js  c++  java
  • 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是啥。

  • 相关阅读:
    软件测试人员的年终绩效考核怎么应对
    收藏
    顶踩组件 前后两版
    订阅组件
    hdu 1963 Investment 完全背包
    hdu 4939 Stupid Tower Defense 动态规划
    hdu 4405 Aeroplane chess 动态规划
    cf 414B Mashmokh and ACM 动态规划
    BUPT 202 Chocolate Machine 动态规划
    hdu 3853 LOOPS 动态规划
  • 原文地址:https://www.cnblogs.com/nao-nao/p/14807001.html
Copyright © 2011-2022 走看看