hdu 4562 Dice 求期望 推数学公式 (2013多校联合)
2013-08-12 11:27
260 查看
很早就A了这题, 不过个人感觉概率和期望的题没有做过题, 然后狠狠地刷了一个列表。现在回过头来一起整理这一类型的题。
这题的状态转移方程应该是很好推的吧,如果推不出方程,那也不用担心,多做点求期望的题就有感觉了。
设dp[i]表示当前在 已经投掷出 i个 不相同/相同 这个状态时期望还需要投掷多少次。然后dp[0]就是答案
相同的情况:
dp[0] = 1 + dp[1]
dp[1] = 1 + ( (m-1)*dp[1] + dp[2] ) / m
dp[i] = 1 + ( (m-1)*dp[1] + dp[i+1] ) / m
...
dp
= 0;
我们拿出i和i+1项来
dp[i] = 1 + ( (m-1)*dp[1] + dp[i+1] ) / m
dp[i+1] = 1 + ( (m-1)*dp[1] + dp[i+2] ) / m
上下相减得 :m * (dp[i] - dp[i+1]) = dp[i+1] - dp[i+2];
令 d[i] = dp[i] - dp[i+1]; 则d[]为公比为m的等比数列, 且d[0] = 1;
所以d[i] = m^i, 然后由列项相消得 dp[0] - dp[i+1] = m^0+m^1+.....+m^i;
令i+1 = n 则 dp[0] = m^0+m^1+.....+m^(n-1);
不相同的情况:
dp[0] = 1 + dp[1]
dp[1] = 1 + (dp[1] + (m-1) dp[2]) / m
dp[2] = 1 + (dp[1] + dp[2] + (m-2) dp[3]) / m
dp[i] = 1 + (dp[1] + dp[2] + ... dp[i] + (m-i)*dp[i+1]) / m
...
dp
= 0;
跟相同的情况一样,选出 dp[i] 和 dp[i+1] 这两行相减 得
dp[i] - dp[i+1] = (m-i-1)/m * (dp[i+1] - dp[i+2]);
令 d[i] = dp[i] - dp[i+1]. 则 d[i] = (m-i-1)/m * d[i+1], 且d[0] = 1;
这个公式看上去跟相同时的情况差不多,不过不能往下化简了
但我们可以根据这个递推关系式 求出每个d[i],
然后再 对其列项相消 就可以发现 dp[0] = d[0] + d[1] + d[2] + ..... + d[n-1];
套这两个公式,代码很短就能AC了, 所以代码也不给出了。
这题的状态转移方程应该是很好推的吧,如果推不出方程,那也不用担心,多做点求期望的题就有感觉了。
设dp[i]表示当前在 已经投掷出 i个 不相同/相同 这个状态时期望还需要投掷多少次。然后dp[0]就是答案
相同的情况:
dp[0] = 1 + dp[1]
dp[1] = 1 + ( (m-1)*dp[1] + dp[2] ) / m
dp[i] = 1 + ( (m-1)*dp[1] + dp[i+1] ) / m
...
dp
= 0;
我们拿出i和i+1项来
dp[i] = 1 + ( (m-1)*dp[1] + dp[i+1] ) / m
dp[i+1] = 1 + ( (m-1)*dp[1] + dp[i+2] ) / m
上下相减得 :m * (dp[i] - dp[i+1]) = dp[i+1] - dp[i+2];
令 d[i] = dp[i] - dp[i+1]; 则d[]为公比为m的等比数列, 且d[0] = 1;
所以d[i] = m^i, 然后由列项相消得 dp[0] - dp[i+1] = m^0+m^1+.....+m^i;
令i+1 = n 则 dp[0] = m^0+m^1+.....+m^(n-1);
不相同的情况:
dp[0] = 1 + dp[1]
dp[1] = 1 + (dp[1] + (m-1) dp[2]) / m
dp[2] = 1 + (dp[1] + dp[2] + (m-2) dp[3]) / m
dp[i] = 1 + (dp[1] + dp[2] + ... dp[i] + (m-i)*dp[i+1]) / m
...
dp
= 0;
跟相同的情况一样,选出 dp[i] 和 dp[i+1] 这两行相减 得
dp[i] - dp[i+1] = (m-i-1)/m * (dp[i+1] - dp[i+2]);
令 d[i] = dp[i] - dp[i+1]. 则 d[i] = (m-i-1)/m * d[i+1], 且d[0] = 1;
这个公式看上去跟相同时的情况差不多,不过不能往下化简了
但我们可以根据这个递推关系式 求出每个d[i],
然后再 对其列项相消 就可以发现 dp[0] = d[0] + d[1] + d[2] + ..... + d[n-1];
套这两个公式,代码很短就能AC了, 所以代码也不给出了。
相关文章推荐
- HDU 4655 Cut Pieces(2013多校6 1001题 简单数学题)
- HDU 4675 GCD of Sequence (2013多校7 1010题 数学题)
- HDU 4611 (2013多校联赛1001 数学+模拟)
- 2013多校联合2 I Warm up 2(hdu 4619)
- hdu 4674 边双连通缩点+倍增lca+麻烦的讨论 (2013多校联合)
- HDU 4686 Arc of Dream (2013多校联合9 1001)
- 2013 多校联合 F Magic Ball Game (hdu 4605)
- 2013 多校联合2 D Vases and Flowers (hdu 4614)
- HDU 4586 Play the Dice (数学,公式推导)
- 2013多校联合4 1010 K-string (hdu 4641)
- HDU 4518 Play the Dice(数学 概率 期望)
- HDU 4643 GSM 简单计算几何 (2013多校联合)
- 2013多校联合8 String (hdu 4681)
- hdu 4361 2013多校联合训练第3场最后一题
- hdu 4677 并查集+分块算法 好题 (2013多校联合)
- hdu 4697 Convex hull 对移动的凸包积分 利用叉积的分配率 (2013多校联合)
- HDU 4655 2013多校联合赛第6场 Cut Pieces
- 2013 多校联合 I I-number(hdu 4608)
- hdu 4607 park visit 2013多校联合训练第一场
- HDU 4671 Backup Plan (2013多校联合7 1006)