zoukankan      html  css  js  c++  java
  • BZOJ十一月月赛

    考场上做第一题做了(4)小时(T)飞了,结果发现被(GCD)卡了,只能再回来(看着题解)补题了;

    (A)

    (ans=frac{sum[r] - sum[l-1]}{r - l + 1}), 能够发现是个斜率模型,可以维护一个下凸壳,在凸壳上二分答案就好了;

    (B)

    设第j轮到了i号点时的概率(P_{ij}​);

    [P_{i0} = frac{d_i}{2m}; ]

    对于与(i)相连的点(u)

    [P_{i1} = sum_u{frac{d_u}{2md_u}} = frac{d_i}{2m} ]

    所以无论过了多少轮到这一点概率都是一样的

    直接(O(n))计算答案即可;

    (C)

    [F_i = max(F_i, {sum_i} xor {sum_l} + sum_l) (0 <= l <= i) ]

    分位考虑,发现当(sum_i​)的第j位为(1​)是,(l​)无论如何取这一位都是(1​)

    反之只有(sum_l)第j位为(1)时才有贡献(1<<(j + 1)),否则无贡献;

    这时可以贪心地预处理(dp[i])(sum[l])包含i状态下最小的(l),选取(1,0)的时候用(dp)贪心即可;

    (D)

    待补

    (E)

    直接写一个(gen)打表即可;

    (F)

    容易想到状压(DP),但要分(m)的奇偶性讨论;

    (m)为奇数时,不需要考虑对坐的情况,可以设(dp(i,j,0/1,0/1)),表示当前考虑到第(i)位为状态(j)时第一位选或不选,当前这一位选或不选;

    (m)为偶数时,发现当前及对面是只能取一个的,所以可以将这两个位置并在一起成为一个位置,这样转移就十分好想了,

    (dp(i,j,0/2,0/2)),选到第(i)组状态为(j)以及第一组和当前组的状态;

    转移都是枚举当前这一位选什么;

    (G)

    十分巧妙的网络流建模,因为数字各不相同能够发现可以取到(LIS_a + LIS_b)这个上界;

    所以问题转化为删去一些数使得(a或b)(LIS)改变;

    对于(dp)值为1的向源点连边,(dp)值为(LIS)的向汇点连边,这样问题就是割去图中的一些点使得(S)(T)不连通;

    经典问题,拆点最小割即可;

  • 相关阅读:
    javac编译多个java文件以及-cp、-classpath、-sourcepath
    深入理解android:id以及@+id/name和@id/name的区别联系
    记使用Kali linux 2.0的一些坑
    从历史的角度谈变化
    谈凤姐
    我之面向对象观
    读厚黑学有感
    什么是时间
    你是谁?
    Sublime Text2搭建Sass编辑环境
  • 原文地址:https://www.cnblogs.com/pbvrvnq/p/8242720.html
Copyright © 2011-2022 走看看