2015多校第四场总结

  1. 1003 Question for the Leader
    经典结论:如果可以把这颗树分成大小都为k的n/k份,那子 树大小是k的倍数的节点恰好有n/k个。(根可以任选)
    反过来思考,想像一棵被分成n/k个,节点数为k的子树,每棵子树的根为深度最浅的节点。将这些子树拼接回去,这时候那些根节点的sz依然是k的倍数。顺着这个思路,可以将该树分成n/k棵大小都为k的子树。
  2. 1004 Route Statistics
    为啥没想到dp?挺好的一题。

  3. 1005 Simple Problem
    很好的一题。树的最小点覆盖,可dp解决。
    define:

    • f[v] : 子树v的最小点覆盖,不选v
    • g[v]: 子树v的最小点覆盖,选了v
      f[v]=song[son],g[v]=1+sonmin{g[son],f[son]}

      到这里还不够,每次动态添加一个叶子节点。g[v]的递推式很难维护。
      对于g[v]和f[v],都表示子树v的最小点覆盖。从贪心的角度考虑,v是边缘点,因此g[v]不会比f[v]更优,因此g[v]>=f[v]。从而
      f[v]=song[son],g[v]=1+sonf[son]

      这样表达式就变得优美易于维护了。
      表达式越简单越好,善于发现关键关系。
  4. 1006 Test for Rikka
    转化的很好,从矩阵乘法转移到长为l的路径数。然后构造。
  5. 1007 Undirected Graph
    询问节点集为 [li,ri] 的导出子图的联通块个数。
    不得不说,好题,思路精妙。
    首先考虑连通块计数。对于一个节点数为V,连通块个数为B,边数为E的森林,有V = B + E 。因此可以通过统计边的数量来求连通块数量。于是对于 [li,ri] 的导出子图,我们维护其生成森林即可。
    先将询问按照右节点排序,然后从左向右加点加边。处理到i时,这是处理的询问是 [j,i] ,这是讲所有边 (v,i)v<i 加进来,可能会加了(v,i), (u,i),但此时(u,v)已经连通,则此时要断开(u,v)。统计边数时,即统计边 (u,v),l<=u,v<=r 的数量,将u作为边(u,v)的编号,统计[l,r]之间的数即可。

    方法论

    • dp
    • 发现并简化关系,表达式
    • 联想,构造
    • 生成树维护,连通块计数
    • 树状数组解决了二维偏序:从左向右添加,第一维;前向和,第二维。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值