p4516-solution

P4516 Solution

link

树形dp。设 \(dp_{u,k,0/1,0/1}\)表示以 \(u\) 为根的子树内安装了 \(k\) 个设备,点 \(u\) 是否安装了设备,点 \(u\) 是否被监听时子树内\(u\) 都被监听的方案数。

注意到状态涉及到了设备的数量,转移的时候需要枚举 \(i\) 表示 \(u\)\(k\)\(j\) 表示 \(v\)\(k\) 并转移到 \(k\)\(i+j\) 的状态。

分四类转移:

  • \(u\) 没有监听设备且 \(u\) 没有被监听时。

显然 \(dp_{u,i+j,0,0}\gets\sum dp_{u,i,0,0}\times dp_{v,j,0,1}\)

  • \(u\) 没有监听设备但 \(u\) 被监听时。

这个时候原先 \(u\) 上面一定没有设备,\(v\) 一定要被(\(v\) 的儿子)监听;

如果原先 \(u\) 已经被监听了,那么 \(v\) 上面可有设备也可没有设备。

如果原先 \(u\) 没有被监听,那么 \(v\) 上面必须要有设备。

于是 \(dp_{u,i+j,0,1}\gets\sum dp_{u,i,0,1}\times(dp_{v,j,0,1}+dp_{v,j,1,1})+dp_{u,i,0,0}\times dp_{v,j,1,1}\)

  • \(u\) 有监听设备但 \(u\) 没有被监听时。

这时 \(v\) 上一定没有监听设备,但 \(v\) 可以被监听也可以不被监听。

\(dp_{u,i+j,1,0}\gets\sum dp_{u,i,1,0}\times(dp_{v,j,0,0}+dp_{v,j,0,1})\)

  • \(u\) 有监听设备且 \(u\) 被监听时。

这个时候原先 \(u\) 上面一定有设备;

如果原先 \(u\) 已经被监听了,那么 \(v\) 爱怎么取怎么取。

如果原先 \(u\) 没有被监听,那么 \(v\) 上面必须要有设备。

\(dp_{u,i+j,1,1}\gets\sum dp_{u,i,1,1}\times(dp_{v,j,0,0}+dp_{v,j,0,1}+dp_{v,j,1,0}+dp_{v,j,1,1})+dp_{u,i,1,0}\times(dp_{v,j,1,0}+dp_{v,j,1,1})\)

初始 \(dp_{u,0,0,0}=dp_{u,1,1,0}=1\)

posted @ 2024-03-01 09:03  iorit  阅读(7)  评论(0)    收藏  举报