テスト32:化学

任意の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、112 ){ 
        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(10 ); 
    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 
* /
コードの表示

 

おすすめ

転載: www.cnblogs.com/seamtn/p/11465140.html