zoukankan      html  css  js  c++  java
  • IOI2020国家集训队作业选做Part1

    (color{red}checkmark)表示有做

    (color{green}checkmark)表示有做,且写了题解

    (circ)表示尝试了,但是不会

    (color{yellow}checkmark)表示想过了,但是没有写代码(口胡了)

    (* easy)表示较简单

    (* medium)表示中等

    (* hard)表示难

    以上难度均指思维难度,主观性较强,与luogu,cf评分可能出入较大,不过luogu有一些比较早的CF黑题是真的水

    没标难度大部分是上古时期在做题的时候无意中做到的,差不多忘光了

    进度(19 / 50)

    Part1.

    1. CF504E((color{red}checkmark))
    2. CF505E((color{red}checkmark))
    3. CF506E ((circ))(* hard)
    4. CF512D((color{yellow}checkmark))(* easy)
    5. CF516D((color{green}checkmark))(* easy)
    6. CF521E((color{green}checkmark))(* medium)
    7. CF538G((color{red}checkmark))(* medium)
    8. CF538H((color{green}checkmark))(* medium)
    9. CF547E((color{red}checkmark))(* easy)
    10. CF585E((color{red}checkmark))(* easy)
    11. CF553E((color{yellow}checkmark))(* medium)
    12. CF549E((circ))(* hard)
    13. CF555E((color{yellow}checkmark))(* easy)
    14. CF568E((color{red}checkmark))(* medium)

    部分题目简要题解

    如果是比较有趣的题会另外写题解,在这里挂链接,简单题就算了

    1. CF516D
    • 由直径的性质,我们注意到(f_x)表示的是到直径两端点的最大值,我们令(v_x)表示(f_x = dis(x,v_x))
    • 考虑直径的中点,如果以其为根,那么对于根的任一子树,任意点的(v_x)一定会在另一颗子树内,即子树内部的(f_x)随着与深度同增同减,即父亲的(f_x)一定严格小于儿子的(f_x)
    • 如果直径的中点是一条边,那么取两端(f_x)较小的那个点即可
    • 根据以上性质,可以线段树合并,直接查询,也许可以用并查集做到更优的复杂度
    • 复杂度(O(qnlog n))
    1. CF538G
    • 注意到上下左右走(x,y)互相约束,不好考虑
    • 考虑转坐标系,用切比雪夫距离来代替曼哈顿距离,(x' = x + y,y' = y - x)
    • 不等式约束计算一下即可
    1. CF538H
    1. CF553E
    • 注意一下转移中因为 j 的值单调增加,所以转移是 DAG,用记忆化搜索即可
    • 注意转移形式是一个半在线卷积,分治 FFT 即可
    1. CF555E
    • 把边双联通分块缩点,定向成强连通
    • 剩下的树上差分随便做就可以了
  • 相关阅读:
    构造方法,析构函数
    Redis Sentinel实现的机制与原理详解
    关于PageRank的总结
    再次建立wordpress
    图的研究杂记
    并行的论文
    还是bib问题
    如何解决bib的一些问题
    忙中记录
    近期一些学术相关记录
  • 原文地址:https://www.cnblogs.com/y-dove/p/14818313.html
Copyright © 2011-2022 走看看