题面
洛谷十月月赛II T2
深海少女与胖头鱼
总共有 n n n 条带 「圣盾」的「胖头鱼」和 m m m 条不带圣盾的胖头鱼,每次等概率对一条存活的胖头鱼造成「剧毒」伤害。
现在想知道,期望造成多少次伤害可以杀死全部胖头鱼?
答案对 998244353 998244353 998244353 取模。
「圣盾」:当拥有圣盾的胖头鱼受到伤害时,免疫这条鱼所受到的本次伤害。免疫伤害后,圣盾被破坏。
「胖头鱼」:在一条胖头鱼的圣盾被破坏后,给予其他所有没有死亡且没有圣盾的胖头鱼圣盾。
「剧毒」:立即杀死没有圣盾的胖头鱼。
输入:2 1 输出:8
输入:10 10 输出:499122389
输入:10 0 输出:65
输入:2 0 输出:5
前置知识
数学期望
※离散型:
如果随机变量只取得有限个值或无穷能按一定次序一一列出,其值域为一个或若干个有限或无限区间,这样的随机变量称为离散型随机变量。
离散型随机变量的一切可能的取值 x i x_i xi与对应的概率 p ( x i ) p(x_i) p(xi)乘积之和称为该离散型随机变量的数学期望(若该求和绝对收敛),记为 E ( x ) E(x) E(x)。它是简单算术平均的一种推广,类似加权平均。
计算公式: E ( X ) = ∑ k = 1 ∞ x k p k E(X)=\sum_{k=1}^\infin x_kp_k E(X)=k=1∑∞xkpk
快速幂
求a的n次方,即求 a n = a ∗ a ∗ a ∗ a ∗ . . . ∗ a a^n=a*a*a*a*...*a an=a∗a∗a∗a∗...∗a( n n n个 a a a),但是当 a , n a,n a,n过大时,暴力的计算便不太适用了。
这时候我们就需要用到快速幂(<-标准解析)
快速幂,二进制取幂(Binary Exponentiation,也称平方法),是一个在 O ( l o g N ) O(logN) O(logN) 的时间内计算 a n a^n an 的小技巧,而暴力的计算需要 O ( N ) O(N) O(N) 的时间。而这个技巧也常常用在非计算的场景,因为它可以应用在任何具有结合律的运算中。
二进制取幂的想法是,将取幂的任务按照指数的 二进制表示 来分割成更小的任务
举例:求 3 13 3^{13} 313
3 13 = 3 × 3 × 3 × 3 × 3 × 3 × 3 × 3 × 3 × 3 × 3 × 3 × 3 3^{13}=3\times3\times3\times3\times3\times3\times3\times3\times3\times3\times3\times3\times3 313=3×3×3×3×3×3×3×3×3×3×3×3×3
3 13 = 3 2 × 3 2 × 3 2 × 3 2 × 3 2 × 3 2 × 3 3^{13}=3^2\times3^2\times3^2\times3^2\times3^2\times3^2\times3 313=3