• 省选模拟4


    A. 点点的圈圈

      发现所有圆的包含关系形成了树的结构,而如果将树的形态确定,那么只需要简单dp就可以求出答案。

      发现只需要在二维平面中找到被当前圆包含的圆,所以直接用KD_tree爆干就可以了。

      然而考场上有点虚放到了最后打,最后15min才过样例,又不会造数据没法对拍,所以意料之中的爆炸了。

      正解是神奇的扫描线,将每个圆分成上半圆和下半圆,那么只要确定上下半圆和横坐标就可以求出来对应的纵坐标。

      那么对于一个圆,在它被加入的时候:查找下半圆对应的前趋,若这个前趋是一个下半圆那么是当前圆的父亲,否则是兄弟,手玩一下就可以明白。

    B. 点点的计算

      打个边可以发现是询问一段区间的$lcm$,考虑如何在线维护这个东西。

      考虑由以$n-1$为右界的答案扩展到以$n$为右界的答案。显然我们只关注区间中每个质因子的最高次幂。

      所以考虑将每个质因子的最高次幂差分掉,维护一段区间的乘积就好了,可以用主席树维护这个东西。

      总的修改次数是$1-n$所含质因子总数,所以是$O(n*logn*loglogn)$。

    C. 点点的最大流

      看不懂题解自闭了,看懂了题解打不出来自闭了,然后去颓了G_keng大神的题解,然后就会做了。

      由于是点仙人掌,所以可以考虑断环成链。发现最大流只与链上的最小值和环上两边的最小值之和有关,然后可以发现环上最小的边在不考虑链的情况下一定满流,所以可以将最小边的权值加到环上其他边,于是可以断掉这条边,然后只需要查询链上最小值就可以了。

      然而这道题有修改操作,所以最小边会发生变化,所以需要动态删加边,使用LCT维护就可以了。

  • 相关阅读:
    1、TensorFlow简介
    4、numpy+pandas速查手册
    3、pandas
    2、Numpy常用函数
    11、C内存四区模型
    1、Numpy基础
    10、C++函数
    开始
    创建与删除SQL约束或字段约束
    Halcon
  • 原文地址:https://www.cnblogs.com/hzoi-cbx/p/12184880.html
Copyright © 2020-2023  润新知