众所周知,把[0,1]区间内的n个随机、相互独立的实数变量\(x_i\)之间的大小关系写成一个排列\(\{p_i\}\),使得\(\forall i<n, x_{p_i} < x_{p_{i+1}}\),那么有一个结论是全部的排列都是等几率出现的,这彻底不难理解,由于全部的变量都是能够轮换的。
可是,题目显然不会这么简单,有些题目会给必定的条件限制,例如强制一些偏序关系\(p_u<p_v\),对于这种状况,通常要求给定的偏序拥有特殊性质(例如一颗森林)才能作,而且能够经过常规的组合方法获得(对于森林的状况,合法的几率是\(\prod_{i} \frac 1 {i的子树大小}\))。可是对于这类问题的一些扩展,传统的组合方法便显得十分复杂,须要更加简洁,适用性更广的代数方法———对这些变量进行积分以获得答案。函数
题面spa
这个题目也是求一个排列,而且求知足某种排列的方案数。
注意到题目中要求的刚好k个极大的数的几率不太好算,考虑容斥掉这一条件。
咱们强制k个极大的数,剩下的数没有限制,那么对于一种有l个极大数的方案,显然咱们会算\(\binom l k\)次,直接二项式反演便可。
如今问题变成了如何算强制k个极大数的方案数。极大数这个概念较为复杂,咱们尝试着将其变为简单的偏序关系。首先先枚举k个极大数,而且肯定好这k个极大数之间的偏序关系,而后根据极大数的定义咱们能够获得某个极大数与其余数的偏序关系。不难发现这个偏序关系本质上是一条链套一堆菊花,那么咱们能够很方便的维护这个偏序关系的贡献。get
题面
对于此题,咱们至关于枚举一个合法抽卡顺序,根据这个抽卡顺序来计算几率。
这个顺序与排列有点像,惟一的不一样是这个几率的计算是加权的,即若抽卡顺序的排列是\(\{p_i\}\),那么对答案的贡献是\(\prod_{i=1}^n {w_{p_i} \over \sum_{j=i}^n w_{p_j}}\)。
一种方法是强行转成与排列相似的问题,把问题转化成有n种颜色,每种颜色有\(w_i\)个不一样的球,令某种颜色的第一个球的位置为\(T_i\),\(T_i\)须要知足某种偏序关系(基图为树);或者是倒着从大到小自底向上地考虑抽卡顺序。这两种方法都须要用到容斥,缘由是偏序关系并不构成一个外向树,因此没法直接算。可是下面提到的积分法就不须要考虑这么多,这种大一统的思想利用随机变量显得无脑却十分有效。class
咱们令\(g_1(x)=1,g_2(x)=2(1-x),g_3(x)=3(1-x)^2\)
答案便为\[\int_{0}^1 g_{w_1}(x_1) {\rm d} x_1 \int_{0}^1 g_{w_2} {\rm d} x_2......\int_{0}^1 g_{w_n}(x_n) {\rm d} x_n \prod [x_{u_i} < x_{v_i}]\]变量
只须要证
\[\int_{0}^1 g_{w_1}(x_1) {\rm d} x_1 \int_{0}^1 g_{w_2} {\rm d} x_2......\int_{0}^1 g_{w_n}(x_n) {\rm d} x_n \prod_{i=1}^{n-1} [x_{p_i}<x_{p_{i+1}}] = \prod_{i=1}^n {w_{p_i} \over \sum_{j=i}^n w_{p_j}}\]
能够轻松用概括证实。
咱们任选一点为根,直接对答案的式子自底向上的进行积分便可。
题目中\(w_i=j\)的几率为\(p_{ij}\),这样的话咱们直接令i的函数\(f_i(x)=\sum_{j=1}^3 p_{ij}g_j(x)\)便可。
扩展