基础概率DP小结
2014-04-17 01:37
197 查看
题目链接:http://acm.sdut.edu.cn:8080/vjudge/contest/view.action?cid=113#overview
C题
Bag of mice:记忆化搜索。
p[ w ][ b ] 表示有w个白老鼠 b个黑老鼠是的概率。
此时若公主取得白鼠则胜,否则若公主取胜则必须有恶龙在下回合取得黑鼠。
D题 Check the difficulty of problems。
好蛋疼的一个题。
关键在于求出每个队过 i 个题的概率。
对于第 t 个队来说。
设Y[ i ] 为其过第 i 个题的概率 , N[ i ]为其不过第 i 个题的概率 , dp[ i ][ j ]为前(i+j)个题中对 i 个题,错 j 个题的概率。
则dp[ i ][ j ] = dp[ i-1 ][ j ] *Y[ i ] + dp[ i ] [ j-1 ]*N[ j ];
则此队做对1到n-1个题的概率为 anw = sigma(dp[ i ][ j ]) (1 <= i <= n-1 , j == m-i) .
此队挂零的概率为 s = N[1]*N[2]*.....*N[m].
好吧,做到这里就真的没思路了,翻了翻题解大都是在做集合减法。
其实每个队至少做出一个题切至少有一个队做出n到题的概率为 所有队都不挂零的概率减去所有对都做出[1,n-1]道题的概率。
K题 Kids and Prizes
开始时有N个盒子,每个盒子里都有一件奖品,M个人依次选取,问最终选走奖品个数的期望。
设 dp[i] 为 i 个人选取之后的个数期望。
显然,dp[ 1 ] = 1,dp[ i ] = (dp[ i - 1] +1)*(n-dp[i-1])/n + dp[i-1]*dp[i-1]/n.
L题 One Person Game
初做这种题简直就是蛋碎一地。
对于期望来说,一般都是确定一个终态。然后开始倒推到初始的状态。
· 比较简单的一般为都是当前状态只与后面已经确定的状态有关。
可是这个题所有的状态都有得分为 0 的状态有关,且此状态的期望就是所求答案。
刚开始时以为是高斯消元,可是n太大,时间上受不了。
其实可以递推各个变元的系数。
设dp[ i ] 为得分为 i 时到达终态时所需要的期望步数。
则
dp[s] = 0; s >= n+1
dp[ i ] = sigma(dp[i+j]*pj) + dp[0]*p0 + 1;
显然dp[ i ]可以表示为(dp[0]*p0+1)*x。
则最终有 dp[0] = (dp[0]*p0+1)*x.
M,N题与L题类似。
关键在于找出各个状态的关系,然后转化为要求状态,最终求出答案。
PS:代码比赛结束后就公开了,就不贴在这了。
C题
Bag of mice:记忆化搜索。
p[ w ][ b ] 表示有w个白老鼠 b个黑老鼠是的概率。
此时若公主取得白鼠则胜,否则若公主取胜则必须有恶龙在下回合取得黑鼠。
D题 Check the difficulty of problems。
好蛋疼的一个题。
关键在于求出每个队过 i 个题的概率。
对于第 t 个队来说。
设Y[ i ] 为其过第 i 个题的概率 , N[ i ]为其不过第 i 个题的概率 , dp[ i ][ j ]为前(i+j)个题中对 i 个题,错 j 个题的概率。
则dp[ i ][ j ] = dp[ i-1 ][ j ] *Y[ i ] + dp[ i ] [ j-1 ]*N[ j ];
则此队做对1到n-1个题的概率为 anw = sigma(dp[ i ][ j ]) (1 <= i <= n-1 , j == m-i) .
此队挂零的概率为 s = N[1]*N[2]*.....*N[m].
好吧,做到这里就真的没思路了,翻了翻题解大都是在做集合减法。
其实每个队至少做出一个题切至少有一个队做出n到题的概率为 所有队都不挂零的概率减去所有对都做出[1,n-1]道题的概率。
K题 Kids and Prizes
开始时有N个盒子,每个盒子里都有一件奖品,M个人依次选取,问最终选走奖品个数的期望。
设 dp[i] 为 i 个人选取之后的个数期望。
显然,dp[ 1 ] = 1,dp[ i ] = (dp[ i - 1] +1)*(n-dp[i-1])/n + dp[i-1]*dp[i-1]/n.
L题 One Person Game
初做这种题简直就是蛋碎一地。
对于期望来说,一般都是确定一个终态。然后开始倒推到初始的状态。
· 比较简单的一般为都是当前状态只与后面已经确定的状态有关。
可是这个题所有的状态都有得分为 0 的状态有关,且此状态的期望就是所求答案。
刚开始时以为是高斯消元,可是n太大,时间上受不了。
其实可以递推各个变元的系数。
设dp[ i ] 为得分为 i 时到达终态时所需要的期望步数。
则
dp[s] = 0; s >= n+1
dp[ i ] = sigma(dp[i+j]*pj) + dp[0]*p0 + 1;
显然dp[ i ]可以表示为(dp[0]*p0+1)*x。
则最终有 dp[0] = (dp[0]*p0+1)*x.
M,N题与L题类似。
关键在于找出各个状态的关系,然后转化为要求状态,最终求出答案。
PS:代码比赛结束后就公开了,就不贴在这了。
相关文章推荐
- Discovering Gold(基础概率dp)
- LightOJ1038---Race to 1 Again (概率dp(基础))
- 基础树形DP小结
- 概率DP基础 CF148D Bag of mice
- lightoj 1030 Discovering Gold (基础概率dp)
- 基础数位DP小结
- 基础树形DP小结
- lightoj 概率dp小结
- POJ 2096 Collecting Bugs (基础概率DP)
- 概率DP基础 HDU 4336
- lightoj 1030 lightoj 1038 基础概率dp 期望
- HDU3853LOOPS (师傅逃亡系列•三)(基础概率DP)
- Race to 1 Again (基础概率dp)
- zoj 3329 One Person Game(概率DP基础)
- 概率DP基础 SGU495 Kids and Prizes
- 概率DP基础 HDU 4405 Aeroplane chess
- 概率DP小结
- ZOJ 3380 Patchouli's Spell Cards [基础概率DP+大数]
- zoj 3640 Help Me Escape(概率DP基础)
- 概率DP入门小结