题目大意
n
<
=
2
e
3
n<=2e3
n<=2e3
solution
首先转化问题,考虑求全部被占领的方案.
不难想到树形
D
P
DP
DP,但是该怎么设置
D
P
DP
DP的状态呢?
考虑
f
[
x
]
[
i
]
f[x][i]
f[x][i]表示
x
x
x的子树全部被占领,
x
x
x的子树内最强的僵尸为
i
i
i.(离散僵尸)
但是问题来了,僵尸并不只从子树内走过来,也有可能从外面走过来.
所以将状态设置为
f
[
x
]
[
i
]
f[x][i]
f[x][i],同样表示
x
x
x的子树全被占领,但
i
i
i表示整棵树中能走到
x
x
x的最强僵尸.
这么设置状态很巧妙,既解决了转移的问题并且不会算重(因为转移的分类讨论,所以不会重).
接下来讨论转移.
设父亲状态为
f
[
x
]
[
k
]
f[x][k]
f[x][k],儿子状态为
f
[
y
]
[
t
]
f[y][t]
f[y][t],这条边被
i
i
i僵尸通过的概率为
w
[
i
]
w[i]
w[i],通不过的概率为
v
[
i
]
v[i]
v[i].
分类讨论一下:
1.
k
=
t
k=t
k=t,
f
[
y
]
[
t
]
∗
f
[
x
]
[
k
]
∗
w
[
k
]
→
f
′
[
x
]
[
k
]
f[y][t] * f[x][k] * w[k] \rightarrow f'[x][k]
f[y][t]∗f[x][k]∗w[k]→f′[x][k].
2.
t
>
k
t>k
t>k,
f
[
x
]
[
k
]
∗
∑
t
>
k
f
[
y
]
[
t
]
∗
v
[
t
]
→
f
′
[
x
]
[
k
]
f[x][k] * \sum_{t>k}f[y][t]*v[t] \rightarrow f'[x][k]
f[x][k]∗∑t>kf[y][t]∗v[t]→f′[x][k]
3.
t
<
k
t<k
t<k,
f
[
x
]
[
k
]
∗
∑
t
<
k
f
[
y
]
[
t
]
∗
v
[
k
]
→
f
′
[
x
]
[
k
]
f[x][k] * \sum_{t<k}f[y][t]*v[k] \rightarrow f'[x][k]
f[x][k]∗∑t<kf[y][t]∗v[k]→f′[x][k]
三种转移分三种情况讨论.
2的转移中,
v
[
t
]
v[t]
v[t]的含义表示在
t
>
k
t>k
t>k时,显然这条边不能被
t
t
t经过到达
x
x
x,不然
f
[
x
]
[
k
]
f[x][k]
f[x][k]这个状态就不合法了.3的情况同理.
这样这题就差不多了.
(口胡完毕)