抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

有一个 (n+2)×m(n + 2) \times m 的长方形,除了第一行和最后一行,其他每一行每一天最左边和最右边的格子都有 pp 的概率被摧毁,每行之间独立且左边和右边独立,求 kk 天之后最上面一行与最下面一行四联通的概率。

其中 1n,m1500,0k1051\le n,m\le 1500,\,0\le k\le 10^5,答案对 109+710^9+7 取模。

一个简单的想法就是我们令 hi,l,rh_{i,l,r} 表示 kk 天后第 ii 行还剩下 [l,r][l,r],前 ii 行联通的概率。Pl,rP_{l,r} 表示单独一行只剩 [l,r][l,r] 的概率。

首先我们有:

hi,l,r=Pl,r[l,r][l,r]hi1,l,rh_{i,l,r}=P_{l,r}\sum_{[l,r]\cap[l',r']\neq\emptyset}h_{i-1,l',r'}

接下来我们考虑 Pl,rP_{l,r},我们令 qi=(ki)pi(1p)kiq_{i}=\binom{k}{i}p^i(1-p)^{k-i},不难发现:

Pl,r=ql1qmrP_{l,r}=q_{l-1}q_{m-r}

然后我们令 fi,rf_{i,r} 表示右端点为 rr 的所有 hh 之和,同理 gi,lg_{i,l} 表示以左端点为 ll 的所有 hh 之和,再令 Fi,rF_{i,r} 表示右端点小于等于 rr 的所有 hh 之和,同理 Gi,lG_{i,l} 表示以左端点大于等于 ll 的所有 hh 之和。

具体地:

fi,r=l=1rhi,l,rgi,l=r=lmhi,l,rFi,r=R=1rfi,RGi,l=L=lmgi,L\begin{aligned} f_{i,r}&=\sum_{l=1}^rh_{i,l,r}\\ g_{i,l}&=\sum_{r=l}^mh_{i,l,r}\\ F_{i,r}&=\sum_{R=1}^rf_{i,R}\\ G_{i,l}&=\sum_{L=l}^mg_{i,L} \end{aligned}

于是我们就有:

hi,l,r=Pl,r(Fi1,mFi1,l1Gi1,r+1)h_{i,l,r}=P_{l,r}\left(F_{i-1,m}-F_{i-1,l-1}-G_{i-1,r+1}\right)

hh 代入 ffgg,我们有:

fi,r=l=1rql1qmr(Fi1,mFi1,l1Gi1,r+1)=qmr(l=1rql1(Fi1,mFi1,l1)Gi1,r+1l=1rql1)gi,l=r=lmql1qmr(Fi1,mFi1,l1Gi1,r+1)=ql1(r=lmqmr(Fi1,mGi1,r+1)Fi1,l1r=lmqmr)\begin{aligned} f_{i,r}&=\sum_{l=1}^rq_{l-1}q_{m-r}\left(F_{i-1,m}-F_{i-1,l-1}-G_{i-1,r+1}\right)\\ &=q_{m-r}\left(\sum_{l=1}^rq_{l-1}\left(F_{i-1,m}-F_{i-1,l-1}\right)-G_{i-1,r+1}\sum_{l=1}^rq_{l-1}\right)\\ g_{i,l}&=\sum_{r=l}^mq_{l-1}q_{m-r}\left(F_{i-1,m}-F_{i-1,l-1}-G_{i-1,r+1}\right)\\ &=q_{l-1}\left(\sum_{r=l}^mq_{m-r}\left(F_{i-1,m}-G_{i-1,r+1}\right)-F_{i-1,l-1}\sum_{r=l}^mq_{m-r}\right) \end{aligned}

考虑到最后答案是 Fn,mF_{n,m},我们发现我们可以绕过 hh 来求 FF

最终复杂度 O(k+nm)\mathcal{O}(k+nm)

代码可以看 这里

评论