CF963E Circles of Waiting
圆内的整点形成了一个类似方阵的结构。设 f x , y f_{x,y} fx,y为 ( x , y ) (x,y) (x,y)期望被经过的次数。我们可以对每一个点列出一个方程:
f x , y = p 0 f x + 1 , y + p 1 f x , y + 1 + p 2 f x − 1 , y + p 3 f x , y − 1 + [ ( x , y ) = ( 0 , 0 ) ] f_{x,y} = {p_0} f_{x+1,y} + p_1 f_{x,y+1} +p_2 f_{x-1,y} + p_3f_{x,y-1} + [(x,y)=(0,0)] fx,y=p0fx+1,y+p1fx,y+1+p2fx−1,y+p3fx,y−1+[(x,y)=(0,0)]
将每一行最左侧的点设为主元,其它的点都用主元表示。从左往右考虑每一列的点: f x , y f_{x,y} fx,y可以用 f x − 1 , y f_{x-1,y} fx−1,y的方程表示出来(因为方程中涉及到的 f x − 1 , y , f x − 1 , y − 1 , f x − 1 , y + 1 , f x − 2 , y f_{x-1,y},f_{x-1,y-1},f_{x-1,y+1},f_{x-2,y} fx−1,y,fx−1,y−1,fx−1,y+1,fx−2,y在之前都已经考虑过了,只有 f x , y f_{x,y} fx,y是未知的)。
这样过后,每一行最右侧的点对应的方程我们还没有用过,用这些方程一定可以解出主元的值,然后再带回去就可以得到每个点的期望被经过次数。
时间复杂度 O ( R 3 ) O(R^3) O(R3)。
CTSC2006 歌唱王国
题号:luogu4548, bzoj1152
设 f i f_i fi为加入第 i i i个字符的时候恰好结束的概率, g i g_i gi为加入 i i i个字符之后还没有结束的概率。设 F ( x ) = ∑ i = 0 ∞ f i x i , G ( x ) = ∑ i = 0 ∞ g i x i F(x) = \sum_{i=0}^\infty f_i x^i, G(x) = \sum_{i=0}^\infty g_ix^i F(x)=∑i=0∞fixi,G(x)=∑i=0∞gixi。
则有 G ( x ) x − F ( x ) = G ( x ) − 1 G(x)x - F(x) = G(x) - 1 G(x)x−F(x)=G(x)−1,即: g i − 1 − f i = g i g_{i-1}-f_i = g_i gi−1−fi=gi。
由 F ( x ) F(x) F(x)的定义我们知道 F ( 1 ) = 1 F(1)=1 F(1)=1,即在每一轮结束的概率的和是 1 1 1。
而我们要求的答案是 F ′ ( 1 ) F'(1) F′(1)。
再设 H ( x ) = ∑ i = j m x m − j ( 1 n ) m − j [ s 1 s 2 ⋯ s j is a border of s ] H(x) = \sum_{i=j}^{m}x^{m-j} ({1\over n})^{m-j} [s_1s_2\cdots s_j\text{is a border of s}] H(x)=∑i=jmxm−j(n1)m−j[s1s2⋯sjis a border of s]。
则
G
(
x
)
(
1
n
)
m
x
m
=
F
(
x
)
H
(
x
)
G(x) ({1\over n})^mx^m = F(x) H(x)
G(x)(n1)mxm=F(x)H(x)
这里 F ( x ) F(x) F(x)的意义相当于是枚举了, G ( x ) G(x) G(x)在末尾加上一个 s s s之后,最早在什么位置出现了完整的 s s s。
带入 x = 1 x=1 x=1得到
G ( 1 ) ( 1 n ) m = F ( 1 ) H ( 1 ) G ( 1 ) = n m H ( 1 ) G(1) ({1\over n})^m = F(1) H(1) \\ G(1) = n^m H(1) G(1)(n1)m=F(1)H(1)G(1)=nmH(1)
此外
G ( x ) x − F ( x ) = G ( x ) − 1 G(x)x-F(x) = G(x)-1 \\ G(x)x−F(x)=G(x)−1
两边同时求导得到
G ( x ) + G ′ ( x ) x − F ′ ( x ) = G ′ ( x ) G(x) + G'(x)x - F'(x) = G'(x) G(x)+G′(x)x−F′(x)=G′(x)
带入 x = 1 x=1 x=1
G ( 1 ) + G ′ ( 1 ) − F ′ ( 1 ) = G ′ ( 1 ) G ( 1 ) = F ′ ( 1 ) G(1) + G'(1) - F'(1) = G'(1)\\ G(1) = F'(1) G(1)+G′(1)−F′(1)=G′(1)G(1)=F′(1)
所以答案就是 n m H ( 1 ) n^m H(1) nmH(1)。
PE522
如果所有的连通块都是孤立的环(没有叶子),那么答案是环数。
否则敲定一个不为孤立的环的连通块,对于这个连通块每一个入度为 0 0 0的点,把某个入度大于 1 1 1的点的某一个儿子拿过来接在它的下面(接过来的部分如果还有入度为 0 0 0的点,就重复前面的操作)。
如果图内存在孤立的环,就还必须在上述过程的最后一次操作之前(此时我们敲定的那个连通块内恰好只有一个叶子)对每一个孤立的环进行额外的操作:把环断成链接在叶子的下面。
综上所述,一张图的答案为叶子数+孤立的环数。
叶子数总和为:
n ( ( n − 2 ) n − 1 ⋅ ( n − 1 ) ) n ((n-2)^{n-1} \cdot (n-1)) n((n−2)n−1⋅(n−1))
也就是每个点成为叶子的方案数。
孤立的环的数量总和为
∑ i = 2 n ( n i ) ( i − 1 ) ! ( n − i − 1 ) n − i \sum_{i=2}^n {n\choose i} (i-1)!(n-i-1)^{n-i} i=2∑n(in)(i−1)!(n−i−1)n−i
每一个长度为 i i i的环出现的方案数是 ( n − i − 1 ) n − i (n-i-1)^{n-i} (n−i−1)n−i,而这样的环有 ( n i ) ⋅ ( i − 1 ) ! {n\choose i} \cdot (i-1)! (in)⋅(i−1)!个。
CF457D Bingo!
考虑 2 s 2^s 2s的组合意义,也就是一个大小为 s s s的集合的子集数量。所以权值的期望也就是:每一个行、列的子集在最后的矩阵中只包含了那 k k k个数的概率的和。
假设某一个子集包含了 t t t个格子,那么它只包含了那 k k k个数的概率是 f t = P k t P m t f_t = {P_k^t \over P_m^t} ft=PmtPkt。直接预处理阶乘来计算 f t f_t ft无法用long double存下;推导可得 f t = f t − 1 ⋅ k − t + 1 m − t + 1 f_t = f_{t-1} \cdot {k-t+1\over m-t+1} ft=ft−1⋅m−t+1k−t+1,由这个递推计算就可以避免上面的问题。
最后的答案就是
∑ i = 0 n ∑ j = 0 n ( n i ) ( n j ) f ( i + j ) n − i j \sum_{i=0}^n \sum_{j=0}^n {n\choose i}{n\choose j} f_{(i+j)n-ij} i=0∑nj=0∑n(in)(jn)f(i+j)n−ij
UOJ352 新年的五维几何
对于所有 l i = r i l_i=r_i li=ri的变量,考虑它们对其它变量的取值范围的影响,然后把这些变量删掉。
不妨将 l i ≤ x i ≤ r i l_i \le x_i \le r_i li≤xi≤ri看做 l i ≤ x i < r i l_i \le x_i < r_i li≤xi<ri,两者算出来的答案是一样的。所以 x i x_i xi的整数部分的取值范围是 [ l i , r i ) [l_i,r_i) [li,ri)。
我们首先枚举 x i x_i xi的小数部分的大小关系,然后暴搜整数部分的合法的取值方案。由于 a i , j a_{i,j} ai,j都是整数,所以 x i − x j ≥ a i , j x_i - x_j \ge a_{i,j} xi−xj≥ai,j是否被满足只取决于 x i x_i xi和 x j x_j xj的整数部分和它们小数部分的大小关系。
时间复杂度 O ( n ! ∏ i ( r i − l i ) ) O(n!\prod_i(r_i-l_i)) O(n!∏i(ri−li))。