任意の2つの入射X軸用、Y:
E(Y X- +)= E(X-)+ E(Y)。
二つの独立したイベントのX、Yの場合:
E(XY)= E(X-)E(Y)
したがって、2つの独立したイベントXについて、Yは、存在している:
E((Y X- +)J)=ΣJK = 0 C JK E(X k)と E(YのJK)
しかし、Eのための(X ^ k)が* E(Y ^ 0)とE(X ^ 0)*主題の意味に従って個別に考慮されるべきであるE(Y ^ k)を。
X && Y:E(X ^ 0)= P * 1
X || Y:E(X ^ 0)= 1
Y Xに依存:E(Y ^ 0)= 1、E(X ^ 0)= P。
式に固執していない、柔軟な考えてみましょう。
#include <ビット/ STDC ++ H> に#define F(I、B)(RG iは= int型、iが= Bを<; ++ i)について の#define RG登録 の#define PF(A)のprintf( "% LLD」、A) の#define PHNプット( "") の#define LL長い長 の#define ILインライン 使用 名前空間STDを、 #define int型LL int型の読み取り(); #define N 200010 int型N、M、P、Q。 const int型 MOD = 1E9 + 7 。 INT [N]、[N] [F 12 ]、G [N]、[ 12 ]、C [ 15 ] [ 15 ]。 INT [N <<へ1 ]、モミ[N << 1 ]、頭部[N << 1 ]、CNT。 ILのint型 qpow(int型のx、int型 K){ int型 S = 1。用(; kは、X = X * X%のMOD、K >> = 1)であれば(K&1)S = Sで* X%MOD。リターンS;} ILの空隙追加(int型のx、int型のY){ [に対する CNT ++] = Y;モミ[CNT] =頭部[X];頭部[X] = CNT。 } ボイド DFS(int型のx、int型FA){ G [X] [ 0 ] = 1; [X] [F 0 ] = 1 。 G [X] [ 1 ] = P * [X]%のMOD; F [X] [ 1 ] = P * [X]%MOD。 F(I、2 、M){ G [x]は[I] = G [x]は[I- 1 ] * [X]%MOD。 F [X] [i]は = F [x]は[I- 1 ] * [X]%MOD。 } のために(int型 [X] I =ヘッド; I; I = FIR [I]){ int型、V = [I]であり; もし(== FA V)続けます。 DFS(V、X) 用(INT J = M; J> = 1 ; - J){ (F [X] [J] + = F [v] [j])%= MOD。 F(k、1、J = 1 ){ (F [X] [J] + = C [J] [K] * G [X] [K]%MOD *のG [V] [JK]%のMOD)% = MOD。 } // F [X] [j]は%= MOD。 } のための(INT J = M; J> = 1 ; - J){ (G [X] [J] + = P * G [V] [J])=%MOD。 F(k、1、J = 1 ){ (G [X] [J] + = C [J] [K] * G [X] [K]%MOD *のG [V] [JK]%のMOD)% = MOD。 } // G [X] [j]は%= MOD。 } } } 署名されたメイン(){ C [ 、n)の{0 ] [ 0 ] = 1 ; F(I、1、12 ){ C [i]が[ 0 ] = 1 ; F(J、1、I)C [I] [J] =(C [I- 1 ] [J- 1 ] + C [I- 1 ] [j])%MOD。 } N = read()は、M =を読み取る(); P =読み取る(); Q = )(読み取ります。 P = P * qpow(Q、mod- 2)%のMOD。 INT X、Y。 F(I、1、N)[I] = 読み取ります(); F(I、2 X =()が読み取ら; Yは。= 読み取る();(x、y)を追加し、(x、y)を加えます。 } DFS(1、0 ); printf(" %LLDする\ n "、F [ 1 ] [M])。 } のIL int型リード(){ int型、S = 0 ; RG チャーCH。 一方、(CH = GETCHAR(),! isdigit(CH))。 用(; isdigit(CH); S = sの* 10 +(CH ^ 48)、CH = GETCHAR())。 リターン秒; } / * G ++ 1.cpp -g 時間./a.out 3 2 1 2 1 2 4 1 2 1 3 * /