【比赛】【SMOJ 2019.1.25~1.26(概率/期望)】
恒大国安
应该是很简单的,但到了最后有两种解法:
- 计算出两支球队进球数都不是质数的概率,再用\(1\)减去;
- 计算出两支球队各个进球数的概率,再枚举加进答案里面。
比赛的时候偷了懒,用了第一种方法,结果被精度卡死……
因为两个实数相乘会损失很多精度。
排队
这一题其实也不难,唯一一个坑点就是题目里面那一个
\[\left (1-\frac{1}{p} \right ) ^{k-1} \times \frac{1}{p}
\]
这个式子的意思是经验值为\(p\)的售货员用\(k\)秒的时间结完一次账的概率。
这个式子看起来难懂,其实一用嘴说出来就明白了:\(\left (1-\dfrac{1}{p} \right ) ^{k-1}\)表示的是这个售货员前\(k-1\)秒没有结完账的概率,\(\dfrac{1}{p}\)表示的就是这个售货员在第\(k\)秒接完了帐的概率。
然后就变回了套路的期望\(\mathrm{DP}\)。方程很容易推。
嵌套函数
这个没什么,就是要注意:题意是最后只返回\(y\)的概率,所以在清空数组后只需要\(f[0][y]=1.0\)即可。
掷骰子
这个如果用常规的期望\(\mathrm{DP}\)的话是搞不出来的,因为这一题依赖的是游戏结束的状态,所以我们只能用顺推的期望\(\mathrm{DP}\)去做。
然后也就没什么了,在统计答案的时候枚举\(\mathrm{A}\)玩家的得分,再对\(\mathrm{B}\)玩家得分的概率做一个前缀和即可。
\(\mathrm{ID}\)分配
这一题其实不难的啊……
首先可以发现直接推比较难,所以我们可以先算出两种方法的合法概率。
容易发现,两种方法所能构造出的合法方案数都是\(\mathrm{P_{id}^{sum}}\)(\(sum=\sum\limits_{i=1}^{n} a[i]\))。就是从所有\(id\)中取出\(sum\)个进行排列罢了。
然后总方案数是:
- 第一种方法是\(id^{sum}\)个。(每个号都有\(id\)中情况,总共有\(sum\)个号);
- 第二种方法是\(\prod\limits_{i=1}^{n} \mathrm{P_{id}^{a[i]}}\)。对于每一组组件都分别考虑排列即可。
然后知道分子分母了,而且分子分母都可以表示成\(sum\)个数的乘积,所以我们每次乘上一对数的商即可。