【六省联考2017】摧毁“树状图”

Description

  https://loj.ac/problem/2144

Solution

  树形 DP 裸题,就是拼出两条路径有点麻烦。
  参考这篇博客的做法。
  设 (dp(i,0)) 表示以 (i) 号点为根的子树中,有一条过根的单链,拆出连通块的数量。注意这里只考虑以 (i) 为根的子树,不算 (i) 的父亲所在的外面那一个大连通块!下面 (3) 个状态同理
  (dp(i,1)) 表示以 (i) 号点为根的子树中,有一条不过根的路径,拆出连通块的数量。
  (dp(i,2)) 表示以 (i) 号点为根的子树中,有一条过根的路径,拆出连通块的数量。
  (dp(i,3)) 表示以 (i) 号点为根的子树种,有一条路径(不管过不过根)和一条过根单链,拆出连通块的数量。
  那么答案显然可以用上面 (4) 种状态拼出来。
  对着暴力对拍,每拍出一种没考虑到的转移就加上,然后就做完了……
  复杂度 (O(n))

  code

原文地址:https://www.cnblogs.com/scx2015noip-as-php/p/loj2144.html