[CF735E]Ostap and Tree
很 ok 的计数题。
Description
给 \(n\) 个节点的树染色,要求每个节点到最近的染色点的距离不超过 \(m\),求染色方案数。
原数据:\(1 \le n \le 100\),\(1 \le m \le 20\),加强:\(n \times m \le 10^7\)。
Solution
设 \(d_i\) 表示 \(i\) 号节点到最近的染色点距离。显然,一组 \(\{d_n\}\) 至多对应 \(1\) 个方案。一个方案必然对应一组 \(\{d_n\}\)。
证明(前一个结论;后一个类似):\(d_i = 0\) 是点 \(i\) 被染色的充要条件。确定哪些节点 \(i\) 被染色后,所有 \(d_i\) 都是确定值。
问题转变为求合法的 \(\{d_n\}\) 数量。
合法,即存在一种染色方案与之对应。经过严谨推理,合法的 \(\{d_n\}\) 满足这样的充要条件:
- 相邻节点的 \(d_i\) 差值绝对值不超过 \(1\)。
- 对于 \(d_u \neq 0\) 的节点,其相邻节点中必须存在 \(d_v=d_u-1\)。
形式证明有点麻烦,可以感性理解一下。
立即就有状态定义:\(f_{u,k,0/1}\) 表示 \(d_u=k\),且除父亲外,\(u\) 节点 无/有 相邻节点 \(v\) 满足 \(d_v=d_u-1\)(钦定 \(k=0\) 时这一维为 \(1\))。合并 \(u,v\) 状态是容易的(新状态为 \(f'\)):
\[\begin{aligned}
&f'_{u,k,1} = f_{v,k-1,1} \times f_{u,k,0}+(f_{v,k-1,1}+f_{v,k,1}+f_{v,k+1,1}+f_{v,k+1,0})f_{u,k,1}\\
&f'_{u,k,0}=(f_{v,k,1}+f_{v,k+1,1}+f_{v,k+1,0})f_{u,k,0}
\end{aligned}
\]

浙公网安备 33010602011771号