zoukankan      html  css  js  c++  java
  • Codeforces Round #684 (Div. 1)

    场上在意识到B会带一个log时果断弃掉去开C,事后证明这是个明智的选择

    A

    顺序填,转化为处理(2 imes 2)的情况,手玩一下能很简单推出

    B

    每次删掉度数最小的点删掉,若其(ge K)的点可以判断情况(1)
    对于找到(K)的团,按上面删的同时,若度数最小的点度数为(k-1)可以把这(k)个点拉出来判断一下,用map来判断邻边
    度数(ge k-1)的点有(O(frac{m}{k}))个,每次判断时间复杂度为(O(k^2logn))
    总复杂度(O(mklogn)),观察到有效的(k)(O(sqrt{m}))级别的

    C

    观察1:操作1影响的是一段连续区域,产生的效果是赋值
    观察2:操作二只会选取(O(logV))段区间消费
    以上操作均可用线段树维护,时间复杂度(O(nlognlogV))

    D

    (dp1_{i})(i)个座位(i)个人的合法方案数,考虑枚举最后一个人的座位,发现两边的位置的转移是独立的

    [dp1_{i}=sumlimits_{j=1}^i [j+(i-j+1)]{i-1choose j-1}dp1_{j-1}dp1_{i-j} ]

    (dp2_i)(i)个座位(i)个人的合法方案的疯狂程度之和,考虑枚举最后一个人的座位,单独算其疯狂度,前(i-1)个人的疯狂度考虑增量

    [dp2_{i}=sumlimits_{j=1}^i ({jchoose 2}+{i-jchoose 2}){i-1choose j-1}dp1_{j-1}dp1_{i-j}+[j+(i-j+1)]{i-1choose j-1}(dp2_{j-1}dp1_{i-j}+dp2_{i-j}dp1_{j-1}) ]

    (dp3_{i,j}(i>j))(i)个座位(j)个人的合法方案数,考虑枚举最长的全部被占用的后缀长度(l)
    (l=0),则方案数为(dp3_{i-1,j});否则,由于第(n-l)个座位是空的,所以两边的位置也是独立的

    [dp3_{i,j}=dp3_{i-1,j}+sumlimits_{l=1}^j {jchoose l}dp3_{i-l-1,j-l}cdot dp1_{l} ]

    (dp4_{i,j}(i>j))(i)个座位(j)个人的合法方案的疯狂程度之和

    [dp4_{i,j}=dp4_{i-1,j}+sumlimits_{l=1}^j {jchoose l}(dp4_{i-1-l,j-l}cdot dp1_{l}+dp3_{i-1-l,j-l}dp2_l) ]

    实际上,这个问题可以做到(O(nlogn)),但是parking and tree这套理论我不太懂,所以暂时先咕了

    E

    结论0:将有效点看作节点,两点之间有边的充要条件为两点均为有效点且相邻。那么图构成了一棵树。

    证明:
    对于有效点((0,?),(?,0))这类的点,会形成一个边框框柱上边界与左边界
    对于有效点((x,y)(x,yge 1)),考虑最低的(1),易得((x-1,y)(x,y-1))有且仅有一个点有效

    结论1:令点((0,0))的深度为(0),有效点((x,y))的深度为(x+y)

    根据上面的证明易得

    容易发现这是翻硬币游戏的拓展版本
    考虑单个点的SG函数
    结论2:有效点((x,y))的SG函数等于(2^{dep})

    对深度施归纳易得

    那么对深度为(dep)的点操作一次,等价于游戏的SG函数异或上(2^{dep+1}-1)
    可以发现最小操作次数就是游戏的SG函数,在二进制下的段数

    对于(x_1,y_1,x_2,y_2)所造成的影响一定是一段连续区间为(1),可以通过求lca判断
    如何求lca呢?通过结论1的证明能发现,每次往上爬是不断对最低位(1)最小的一维(-1)
    通过对位处理,可以(O(logV))求得lca

    终于更完了,撒花✿✿ヽ(°▽°)ノ✿
    吐槽一下官方题解比我更都慢...

  • 相关阅读:
    poj 1328 Radar Installation (贪心)
    hdu 2037 今年暑假不AC (贪心)
    poj 2965 The Pilots Brothers' refrigerator (dfs)
    poj 1753 Flip Game (dfs)
    hdu 2838 Cow Sorting (树状数组)
    hdu 1058 Humble Numbers (DP)
    hdu 1069 Monkey and Banana (DP)
    hdu 1087 Super Jumping! Jumping! Jumping! (DP)
    必须知道的.NET FrameWork
    使用记事本+CSC编译程序
  • 原文地址:https://www.cnblogs.com/Grice/p/14000817.html
Copyright © 2011-2022 走看看