• 省选模拟4


    好久不写博客了啊(懒啊)(颓啊)(不想动啊)
    _(:з」∠)_

    (T1:)
    容易想到根据包含关系建出一颗树,然后简单DP就行了
    考虑怎么建树
    首先有个结论
    如果一个圆心A被圆B包含,且(r_A < r_B),那么圆A被圆B包含(根据不相交的性质易知)
    考虑有r的限制关系,把圆按照r从小到大排序
    每次用当前圆去覆盖,把所有覆盖到的圆心向当前圆连边并删去,用KD-tree或二维线段树维护即可

    (T2:)
    通过打表可以发现(ans(n,k)=lcm_{i=n-k+1}^n(i))
    首先不能直接求,因为lcm过大,且过程中不能取模
    考虑分解质因数,对于每个质因子的指数取max即可,复杂度(O(n^2))

    考虑优化,构造n个数组D,满足(prod_{i=n-k+1}^n D_n[k] = ans(n,k))
    发现(D_n)(D_{n+1})的差异不大,于是可以通过(D_n)来构造(D_{n+1})
    首先令(D_{n+1}[i]=D_n[i] (i leq n)),(D_{n+1}[n+1]=n+1),显然有问题
    考虑对(n+1)分解质因子,设(n+1=p_1^{c_1}*p_2^{c_2}*...p_k^{c_k})
    对于任意一个(p_i)将D数组中最靠后的(c_i)(p_i)除去即可,这样构造出的新数组显然满足条件

    因为(sum c)(log)级别的,所以每次只会修改(log)个位置,用主席树维护
    构造复杂度为(O(nlog^2n))
    查询时输出第n颗线段树的(prod_{i=n-k+1}^n D[i])即可
    查询复杂度为(O(Qlogn))

    (T3:)
    250行代码,wsl
    表示看不懂题解...所以说说我的做法...

    首先可以发现这是个仙人掌,而且还是特殊的仙人掌(仙人球???)
    它不仅仅满足每条边只在一个简单环内,它还满足每个点只在一个简单环内!!!
    容易想到边双缩点,但发现缩完后就不会做了...

    仔细分析题目性质可以发现
    1.如果s到t的路径上有一个环,那么这个环上的最小边一定满流!
    2.如果s和t在一个环上,那么这个环上的最小边一定满流!
    3.如果s和t一个在环上一个在环外,那么这个环上的最小边一定满流!
    总之,经过的环上的最小边一定满流!

    那么我们就可以将每个环上的最小边的容量加到环的其他边上,将原图转化为一颗树,两点的最大流就是链上的最小值

    那还要动态修改边权怎么办呢?
    发现如果最小边变化的话,树的形态也会发生改变,链上加的权值也会改变

    综上所述,我们需要一个数据结构进行以下操作:
    1.维护树的形态
    2.查询链上的最小值以及其编号
    3.链上加一个值

    LCT就行了...

    于是最终的代码为:
    1.tarjan (30行)
    2.LCT (100行)
    3.大力分类讨论 (60行)
    (4.7KB)
    。。。。。。。

    ps: 数据锅了啊,第8组数据最后面炸了啊!!!

  • 相关阅读:
    2015PPTV校招笔试详解
    2015华数校招笔试详解
    2015我的校招之路
    2015美团校招笔试试题
    关于联想超极本装入Ubuntu系统无法开启无线硬件开关的解决
    RabbitMQ
    office 2016 for mac 下拉框 无法展开问题
    mac 下 tomcat7的安装
    mac 10.11.6,Xcode8下,ruby2.3安装,Cocoapods安装~
    学习的学习的方法
  • 原文地址:https://www.cnblogs.com/Gkeng/p/12179105.html
Copyright © 2020-2023  润新知