CF908D New Year and Arbitrary Arrangement 期望DP

Posted itst

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CF908D New Year and Arbitrary Arrangement 期望DP相关的知识,希望对你有一定的参考价值。

题目传送门

题意:给出正整数$pa,pb,k$,最开始你有一个空串,每一次你有$frac{pa}{pa + pb}$的概率向串最后放一个$a$,有$frac{pb}{pa + pb}$的概率向串最后放一个$b$,当串中$ab$子序列的数量$geq K$时停止,问在操作停止时串中$ab$子序列个数的期望,对$10^9+7$取模。$pa,pb leq 10^6,k leq 1000$


设$f_{i,j}$表示当前串内有$i$个$a$,$j$个$ab$子序列的子序列个数期望(至于为什么不是设$a$和$b$,因为实际上$b$影响的是$ab$的数量,而只知道$a$和$b$的多少,$ab$的多少是不确定的)。可以知道转移方程为:$f_{i,j}=f_{i,i+j} imes frac{pb}{pa+pb} + f_{i+1,j} imes frac{pa}{pa+pb}$,但是实际上有情况一直放$a$而不放$b$,不依靠一些数学方法状态量会爆炸。

接下来是愉悦的推公式时间~~

我们可以知道当$i+j geq k$时,只要再放一个$b$就将停止操作,那么我们的期望可以写作$frac{pb}{pa + pb} imes sumlimits_{p=0}^infty [(frac{pa}{pa + pb})^p imes (i + j + p)]$。不妨设$S = sumlimits_{p=0}^infty [(frac{pa}{pa + pb})^p imes (i + j + p)]$,那么$frac{pa}{pa + pb}S = sumlimits_{p=0}^infty [(frac{pa}{pa + pb})^{p+1} imes (i + j + p)]$,相减得$frac{pb}{pa + pb}S = i + j + sumlimits_{p=1}^infty (frac{pa}{pa + pb})^p$,又由无穷递减等比数列公式得$sumlimits_{p=1}^infty (frac{pa}{pa + pb})^p = frac{frac{pa}{pa+pb}}{1-frac{pa}{pa+pb}}=frac{pa}{pb}$,所以我们需要求的期望就是$i+j+frac{pa}{pb}$

 1 #include<bits/stdc++.h>
 2 #define MOD 1000000007
 3 #define ll long long
 4 #define MAXN 1001
 5 using namespace std;
 6 
 7 ll dp[MAXN][MAXN];
 8 int K , pa , pb;
 9 
10 inline ll ksm(ll a , ll b){
11     ll times = 1;
12     while(b){
13         if(b & 1)
14             times = times * a % MOD;
15         a = a * a % MOD;
16         b >>= 1;
17     }
18     return times;
19 }
20 
21 inline ll calc(ll a , ll b){
22     if(a + b < K)
23         return dp[a][b];
24     else
25         return (a + b + pa * ksm(pb , MOD - 2)) % MOD;
26 }
27 
28 int main(){
29     cin >> K >> pa >> pb;
30     for(ll i = K - 2 ; i >= 0 ; i--)
31         for(ll j = K - i - 1 ; j ; j--)
32             dp[i][j] = (calc(i + j , j) * pb + pa * calc(i , j + 1)) % MOD * ksm(pa + pb , MOD - 2) % MOD;
33     cout << calc(0 , 1);
34     return 0;
35 }

 

以上是关于CF908D New Year and Arbitrary Arrangement 期望DP的主要内容,如果未能解决你的问题,请参考以下文章