SHCPC2022 I 题解
爱讨论!
SHCPC2022 I
关注到这个题目本质上等价于下面这个题目:
每次随机选择两个点,将其连边,当出现以下情况时就停止连边:
- 某个点度数 $>2$
- 重边
- 自环
求期望步数。
这个问题里,我们要考虑的就是环的情况。我们考虑仅有点数 $\geq 3$ 的链可以成环。所以我们考虑:孤立点,仅有2个点的短链,有大于2个点的长链三种情况。设计状态为 $f_{i,j,k}$ 分别代表孤立点有 $i$ 个,短链 $j$ 条,长链 $k$ 条。接下来我们开始分类讨论:
两个孤立点:
当 $i>1$ 时,有 $f_{i,j,k}\leftarrow f_{i-1,j+1,k}$,对应概率为 $p = \frac{\binom{n}{2}}{n^2}$
一个孤立点和一条短链:
考虑拿孤立点和短链的一端成长链,当 $i>0,j>0$ 时,有 $f_{i,j,k}\leftarrow f_{i-1,j-1,k+1}$,对应概率为 $p = \frac{2ij}{n^2}$
一个孤立点和一条长链:
考虑拿孤立点和长链的一端成长链,当 $i>0,k>0$ 时,有 $f_{i,j,k}\leftarrow f_{i-1,j,k}$,对应概率为 $p = \frac{2ik}{n^2}$
一个短链和另一条短链:
考虑拿短链一端和另一条短链的一端成长链,当 $j>1$ 时,有 $f_{i,j,k}\leftarrow f_{i,j-2,k+1}$,对应概率为 $p = \frac{\binom{j}{2}22*2}{n^2}$ 注意这里顺序可以颠倒所以多一个
一个短链和一条长链:
考虑拿短链两端和长的一端成长链,当 $j>0,k>0$ 时,有 $f_{i,j,k}\leftarrow f_{i,j-1,k}$,对应概率为 $p = \frac{222jk}{n^2}$
一个长链和另一条长链:
拿长链一端和另一条长链的一端成长链,当 $k>1$ 时,有 $f_{i,j,k}\leftarrow f_{i,j,k-1}$,对应概率为 $p = \frac{\binom{k}{2}22*2}{n^2}$ 注意这里顺序可以颠倒所以多一个
长链自己成环
这个就直接当 $k>0$ 时有 $f_{i,j,k} = f_{i,j,k-1}$,对应概率 $p = \frac{2k}{n}$
转移方程是 $f_{i,j,k} = \frac{1}{\sum p} (f_{sta}\times p)$ 这个是因为考虑非法概率是 $1 - \sum p$,也就是只有 $\sum p$ 的概率继续走下去。根据期望也就是走 $\frac{1}{\sum p}$ 次才可以。代码使用记忆化搜索实现
1 | /* |
SHCPC2022 I 题解