题链:

http://www.lydsy.com/JudgeOnline/problem.php?id=3566
题解:

概率dp,树形dp
如果求出每个点被通电的概率t,
那么期望答案就是t1×1+t2×1+t3*1+...+tn×1
现在问题就是要去求每个点被通电的概率。
因为是一颗树,所以每个点是否通电只由三个因素决定:
自己给自己通电;儿子给自己通电;父亲给自己通电。
这里采取求反面的方法:
对于每个点u,
1.求出u所在的子树不能给u点通电的概率f[u]。
2.求出u的父亲不能给u点通电的概率g[u]。
那么最终,每个点可以被通电的概率就是1-f[u]*g[u].
对于f[u]的求法:
dfs这颗树,用儿子v去更新父亲节点u:
$$f[u]=(1-q[u])\times \prod_{u->v:p(边的概率为p)}(f[v]+(1-f[v])*(1-p))$$
对于g[u]的求法:
同样的dfs这颗树,用父亲u去更新儿子节点v
先求出除了v之外,其他的点使得u通电的概率:t=f[u]*g[u]/(f[v]+(1-f[v])*(1-p));
(就是除掉儿子对父亲的贡献,注意(f[v]+(1-f[v])*(1-p))等于0的情况)
然后$$g[v]=t+(1-t)\times (1-p)$$

然后计算答案即可。

代码:

#include<bits/stdc++.h>
#define MAXN 500005
using namespace std;
const double eps=1e-9;
int dcmp(double x){
if(fabs(x)<eps) return 0;
return x>0?1:0;
}
struct Edge{
int ent; double p[MAXN*2];
int to[MAXN*2],nxt[MAXN*2],head[MAXN];
Edge(){ent=2;}
void Adde(int u,int v,int w){
to[ent]=v; p[ent]=1.0*w/100;
nxt[ent]=head[u]; head[u]=ent++;
}
}E;
double f[MAXN],g[MAXN],q[MAXN],ANS;
int N;
void dfs1(int u,int dad){
f[u]=(1-q[u]);
for(int e=E.head[u];e;e=E.nxt[e]){
int v=E.to[e]; if(v==dad) continue;
dfs1(v,u);
f[u]*=(f[v]+(1-f[v])*(1-E.p[e]));
}
}
void dfs2(int u,int dad){
double t;
for(int e=E.head[u];e;e=E.nxt[e]){
int v=E.to[e]; if(v==dad) continue;
if(dcmp(f[v]+(1-f[v])*(1-E.p[e]))!=0)
t=f[u]*g[u]/(f[v]+(1-f[v])*(1-E.p[e]));
else t=0;
g[v]=t+(1-t)*(1-E.p[e]);
dfs2(v,u);
}
}
int main(){
ios::sync_with_stdio(0);
cin>>N;
for(int i=1,a,b,c;i<N;i++)
cin>>a>>b>>c,E.Adde(a,b,c),E.Adde(b,a,c);
for(int i=1;i<=N;i++)
cin>>q[i],q[i]/=100;
g[1]=1;
dfs1(1,0);
dfs2(1,0);
for(int i=1;i<=N;i++)
ANS+=1-f[i]*g[i];
cout<<fixed<<setprecision(6)<<ANS<<endl;
return 0;
}

  

●BZOJ 3566 [SHOI2014]概率充电器的更多相关文章

  1. BZOJ 3566: [SHOI2014]概率充电器( 树形dp )

    通过一次dfs求出dp(x)表示节点x考虑了x和x的子树都没成功充电的概率, dp(x) = (1-p[x])π(1 - (1-dp[son])*P(edge(x, son)).然后再dfs一次考虑节 ...

  2. BZOJ 3566: [SHOI2014]概率充电器 [树形DP 概率]

    3566: [SHOI2014]概率充电器 题意:一棵树,每个点\(q[i]\)的概率直接充电,每条边\(p[i]\)的概率导电,电可以沿边传递使其他点间接充电.求进入充电状态的点期望个数 糖教题解传 ...

  3. bzoj 3566: [SHOI2014]概率充电器

    Description 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器:"采用全新纳米级加工技术,实现元件与导线能否通电完全由真随机数决定!SHOI 概率 ...

  4. BZOJ.3566.[SHOI2014]概率充电器(概率DP 树形DP)

    BZOJ 洛谷 这里写的不错,虽然基本还是自己看转移... 每个点的贡献都是\(1\),所以直接求每个点通电的概率\(F_i\),答案就是\(\sum F_i\). 把\(F_x\)分成:父节点通电给 ...

  5. bzoj 3566 [SHOI2014]概率充电器——树型

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3566 一眼看上去高斯消元.n^3不行. 竟然直接去看了TJ.发现树型dp.一下想到了自己还没 ...

  6. bzoj 3566: [SHOI2014]概率充电器【树形概率dp】

    设g[u]为这个点被儿子和自己充上电的概率,f[u]为被儿子.父亲和自己充上电的概率 然后根据贝叶斯公式(好像是叫这个),1.P(A+B)=P(A)+P(B)-P(A)*P(B),2.P(A)=(P( ...

  7. bzoj 3566: [SHOI2014]概率充电器 数学期望+换根dp

    题意:给定一颗树,树上每个点通电概率为 $q[i]$%,每条边通电的概率为 $p[i]$%,求期望充入电的点的个数. 期望在任何时候都具有线性性,所以可以分别求每个点通电的概率(这种情况下期望=概率 ...

  8. BZOJ 3566 [SHOI2014]概率充电器 ——期望DP

    期望DP. 补集转化,考虑不能被点亮的情况, 然后就是三种情况,自己不能亮,父亲不能点亮它,儿子不能点亮它. 第一次计算比较容易,第二次计算的时候需要出去第一次的影响,因为一条线只能传导一次 #inc ...

  9. 【BZOJ 3566】 3566: [SHOI2014]概率充电器 (概率树形DP)

    3566: [SHOI2014]概率充电器 Description 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品——概率充电器:“采用全新纳米级加工技术,实现元件与导线能否通电 ...

随机推荐

  1. beta冲刺用户测评-咸鱼

    测评人:庄加鑫-咸鱼 测评结果  一.使用体验数据加载响应很快!页面切换丝滑流畅!UI有点偏暗,有些字被覆盖了.页面布局过于居中,两侧空白范围较大.总体功能完善.二.登录.注册.忘记密码界面管理员登录 ...

  2. 201621123040《Java程序设计》第十四周学习总结

    1.本周学习总结 1.1以你喜欢的方式(思维导图或其他)归纳总结与数据库相关内容. 显示所有数据库: show databases; 创建数据库: create database test; 删除数据 ...

  3. 201621123040《Java程序设计》第十一周学习总结

    1.本周学习总结 1.1以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2.书面作业 2.1源代码阅读:多线程程序BounceThread 2.1.1BallRunnable类有什么用?为什 ...

  4. 201621123050 《Java程序设计》第7周学习总结

    1. 本周学习总结 1.1 思维导图:Java图形界面总结 2.书面作业 1. GUI中的事件处理 1.1 写出事件处理模型中最重要的几个关键词. 1.事件:用户的操作,例如点击或输入之类的操作 2. ...

  5. 201621123057 《Java程序设计》第6周学习总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图或相关笔记,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰 ...

  6. AWS EC2服务器的HTTPS负载均衡器配置过程

    AWS EC2服务器配置负载均衡器步骤:   1.普通负载均衡器   至少两台EC2实例,这里以Centos6.7系统为例 启动之后先安装个apache的httpd服务器默认80端口,或者使用其他服务 ...

  7. rsync 自动创建目录的坑点

    rsync同步文件有三种模式: 1.把源站路径下某个文件,同步到目标路径.例如rsync -aR /data/1/2/3/a.txt 1.1.1.1:/data/ ,目标机器将自动创建多层目录存放a. ...

  8. H5 音频标签自定义样式修改以及添加播放控制事件

    说明: 需求要求这个音频标签首先要是可适配移动端浏览器的,音频样式就是参考微信做的. 最终效果如下: 具体实现 思路: H5 的 <audio> 标签是由浏览器负责实现默认样式的.所以不同 ...

  9. Win7下安装composer, 并使用其安装smarty

    安装composer需要开启PHP openssl扩展. 1) 先查看PHP是否开启了openssl扩展 键盘win+r 输出cmd, 可以看到Dos窗口, 然后执行php -m (需要添加PHP环境 ...

  10. sts中maven

    建立一个maven web的工程 网上有很多关于maven的下载,配置等,我这里就不多说了. 下面介绍主要介绍关于在sts中建立一个maven时最开始出现的错误问题. 创建maven工程 file-& ...