[CF1517F] Union

ImALAS發表於2024-05-25

計數好題。關鍵點在於一步轉化,然而我並沒有發現。

首先期望轉計數,對於這類問題,我們有很經典的處理手法:\(\sum_r\sum_S [f(S)=r]r=\sum_r\sum_S [f(S)\ge r]\)

但是我並沒有發現這一步的意義。事實上,這個條件寫到樹上就是,存在一個點,使得離它最近的非空閒點距離 \(>r\)

然後就可以 tree dp 了,設 \(f_{i,j}\) 表示 \(i\) 子樹內離 \(i\) 最近的非空閒點距離為 \(j\)\(g_{i,j}\) 表示 \(i\) 子樹內已經滿足其子樹內部 \(>r\) 限制的點中,離 \(i\) 最遠的距離為 \(j\)。初始 \(f_{u,0}=g_{u,0}=1\)。對應空閒/非空閒。

轉移:

  • \(f_{u,j}\times f_{v,k}\to f_{u,\min(j,k+1)}\)
  • \(f_{u,j}\times g_{v,k}\),若 \(j+k+1>r\) 則轉移到 \(g_{u,k+1}\),反之轉移到 \(f_{u,j}\)
  • \(g_{u,j}\times f_{v,k}\),類似。
  • \(g_{u,j}\times g_{v,k}\to g_{u,\max(j,k+1)}\)

轉移弱於樹上揹包,單次 \(\mathcal O(n^2)\),總複雜度 \(\mathcal O(n^3)\)

總結:計數物件貢獻形式的轉化可能蘊含著限制條件的轉化,時刻關注每一步對問題的影響。

相關文章