测试32:chemistry

对于任意两个事件 X, Y :
E(X + Y ) = E(X) + E(Y ) 。
对于两个相互独立事件 X, Y :
E(XY ) = E(X)E(Y )
因此,对于两个相互独立事件 X, Y ,有:
E((X + Y ) j ) = ∑ j k=0 C jk E(X k ) E(Y j−k )

但是对于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<bits/stdc++.h>
#define F(i,a,b) for(rg int i=a;i<=b;++i)
#define rg register
#define pf(a) printf("%lld ",a)
#define phn puts("")
#define LL long long
#define il inline
using namespace std;
#define int LL
int read();
#define N 200010
int n,m,p,q;
const int mod=1e9+7;
int a[N],f[N][12],g[N][12],C[15][15];
int to[N<<1],fir[N<<1],head[N<<1],cnt;
il int qpow(int x,int k){int s=1;for(;k;x=x*x%mod,k>>=1)if(k&1)s=s*x%mod;return s;}
il void add(int x,int y){
    to[++cnt]=y;fir[cnt]=head[x];head[x]=cnt;
}
void dfs(int x,int fa){
    g[x][0]=1;f[x][0]=1;
    g[x][1]=p*a[x]%mod;f[x][1]=p*a[x]%mod;
    F(i,2,m){
        g[x][i]=g[x][i-1]*a[x]%mod;
        f[x][i]=f[x][i-1]*a[x]%mod;
    }
    for(int i=head[x];i;i=fir[i]){
        int v=to[i];
        if(v==fa)continue;
        dfs(v,x);
        for(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][j-k]%mod)%=mod;
            }
            //f[x][j]%=mod;
        }
        for(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][j-k]%mod)%=mod;
            }
            //g[x][j]%=mod;
        }
    }
}
signed main(){
    C[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=read();p=read();q=read();
    p=p*qpow(q,mod-2)%mod;
    int x,y;
    F(i,1,n)a[i]=read();
    F(i,2,n){
        x=read();y=read();add(x,y);add(y,x);
    }
    dfs(1,0);
    printf("%lld\n",f[1][m]);
}
il int read(){
    int s=0;rg char ch;
    while(ch=getchar(),!isdigit(ch));
    for(;isdigit(ch);s=s*10+(ch^48),ch=getchar());
    return s;
}
/*
g++ 1.cpp -g
time ./a.out
3 2 1 2
1 2 4
1 2
1 3
*/
View Code

 

转载于:https://www.cnblogs.com/seamtn/p/11465140.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《无机化学(第六版)》是一本流行的教科书,用于学习无机化学的学生和专业人士。它被广泛认可为无机化学领域的权威参考书籍,并已经发行了多个版本。无机化学是研究无机物和无机反应的化学分支,涵盖了无机化合物的结构、性质、合成方法以及与生物和环境的相互作用。 本书的第六版更新了以往版本的内容,并新增了最新的研究和发现。它以简明清晰的语言阐述了无机化学的基本原理和理论,同时提供了大量的实例和案例研究,帮助读者更好地理解和应用所学知识。 《无机化学(第六版)》的章节安排清晰,包括无机化合物的基本性质、配位化学、羰基和膦配合物、固体结构和化学、主族元素、过渡金属和锕系元素等。每个章节都有详细的解释和示例,有助于读者巩固所学的概念和原理。 此外,本书还提供了习题和答案,供读者进行自我测试和巩固知识。部分习题还附有解题思路和方法,帮助读者更好地理解和应用所学知识。 《无机化学(第六版)》是一本权威且全面的教材,适用于大学本科无机化学课程的学生以及从事无机化学研究的专业人士。它是学习无机化学的重要参考资料,可以帮助读者深入理解和应用无机化学的原理和方法。无机化学的研究是理解和应用化学知识的重要组成部分,而这本教材将成为您学习该领域的不可或缺的工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值