http://acm.hdu.edu.cn/showproblem.php?pid=3058
把这题和上面这题对照起来看,上面这题是给定一个字符串,然后在一个空串上随机加上一个字符串,字母出现的概率相同(不同又咋地!),直到构造过程中出现给定的字符串的时候停止,求构造的串的期望长度。
假定给定的串的长度为L,那么这个串的状态就是0~L之间的一个数,记F[i]表示从i状态到L状态的期望的步数,那么:
F[i] = 1 + 1/n*(sigmaF[c(i,j)]),其中c(i,j)表示状态末尾加上第j个字母之后的新状态,F[L] = 0;
然后这题的思路是不是有点眉目了:
转自:http://www.cnblogs.com/xin-hua/p/3281959.html
思路:
1.求f[n];dp[i]表示i个连续相同时的期望
则 dp[0]=1+dp[1]
dp[1]=1+(5dp[1]+dp[2])/6
……
dp[i]=1+(5dp[1]+dp[i+1])/6
……
dp[n]=0
可以求得f[n]=(6^n-1)/5.
2.求h[n];dp[i]表示i个连续相同的1时的期望 //dp[i]表示由i个1到n个1的平均步数。
则 dp[0]=1+dp[1]/6
dp[1]=1+(5dp[0]+dp[2])/6
……
dp[i]=1+(5dp[0]+dp[i+1])/6
……
dp[n]=0
可以求得h[n]=(6^(n+1)-6)/5.
3.求g[m];dp[i]表示i个1时的期望
则 dp[0]=1+dp[1]/6
dp[1]=1+dp[2]/6
……
dp[i]=1+dp[i+1]/6
……
dp[0]=0
可以求得g[m]=6*m.
这样就有 m1>=(6^n-1)/30;m2>=(6^n-1)/5
分析易知(6^n-1)/30不能整除,所以m1=(6^n+24)/30 ; m2=(6^n-1)/5 .