题面

显然就是在求概率,因为期望乘的全是1.。。。然后就推推推啊

设$fgg[i]$表示这个点父亲没给他充上电的概率,$sgg[i]$表示这个点子树(和它自己)没给他充上电的概率,然后这个点没充上电的概率就是$fgg[i]*sgg[i]$

我们发现我们在树上转移的话$fgg$是依赖自己的$sgg$向儿子转移的,那我们先把$sgg$求出来,下面设$suc[i]$表示$i$这个点充上电的概率,$lnk[i][j]$表示连接$i$和$j$的导线能通电的概率

$sgg[i]=(1-suc[i])\prod_{g∈son_i}(sgg[g]+(1-sgg[g])*(1-lnk[i][g]))$

就是说首先自己不能充电,同时儿子也都不能给自己充电。所以每个儿子要么自己不能充电(这时不管导线),要么能充电但是导线坏了,我们为了下面方便写不妨对每个儿子记录下这个儿子g gg的概率$p[g]$(即$(sgg[g]+(1-sgg[g])*(1-lnk[i][g]))$这一坨)

然后求$fgg$,这里我们先把每个点针对每个儿子$g$时自己不能给儿子充电的概率$P$求出来

$P=fgg[nde]*sgg[nde]/p[g]$

(在儿子g gg的所有情况$p[g]$中,因为父亲节点gg的原因有$fgg[nde]*sgg[nde]$这么多)

然后和上面一样可以求出来$fgg[g]$

$fgg[g]=P+(1-P)*(1-lnk[i][g])$

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=,M=1e6+;
int p[N],noww[M],goal[M],n,t1,t2,cnt;
double val[M],pos[N],sgg[N],fgg[N],mem[N],t3,ans;
void Link(int f,int t,double v)
{
noww[++cnt]=p[f],p[f]=cnt;
goal[cnt]=t,val[cnt]=v;
}
void Gettre(int nde,int fth)
{
sgg[nde]=-pos[nde];
for(int i=p[nde];i;i=noww[i])
if(goal[i]!=fth)
{
int g=goal[i]; Gettre(g,nde);
mem[g]=sgg[g]+(-sgg[g])*(-val[i]);
sgg[nde]*=mem[g];
}
}
void Getans(int nde,int fth)
{
ans-=sgg[nde]*fgg[nde];
for(int i=p[nde];i;i=noww[i])
if(goal[i]!=fth)
{
int g=goal[i];
double fag=sgg[nde]*fgg[nde]/mem[g];
fgg[g]=fag+(-fag)*(-val[i]),Getans(g,nde);
}
}
int main()
{
scanf("%d",&n),ans=n;
for(int i=;i<n;i++)
{
scanf("%d%d%lf",&t1,&t2,&t3);
Link(t1,t2,t3/),Link(t2,t1,t3/);
}
for(int i=;i<=n;i++)
scanf("%lf",&pos[i]),pos[i]/=;
Gettre(,),fgg[]=,Getans(,),printf("%.6f",ans);
return ;
}

最新文章

  1. hellocharts包的使用心得
  2. MSDTC故障排除,DTCTester用法 (二)
  3. Javascript中的链表
  4. Delphi 有关Dbgrideh控件:变色处理
  5. 访问本地Access 数据出错
  6. [转]Informatica vs SSIS
  7. adblockTester通过js检测用户浏览器是否安装了AdBlock
  8. shell基础知识
  9. KMP算法中next函数的理解
  10. Android STL PORT
  11. JavaScript js 精确、保留小数方法
  12. URAL-1991 The battle near the swamp 水题
  13. JavaWeb学习笔记之Servlet(二)
  14. openwrt上网配置的一些理解(二)
  15. 【CNMP系列】CentOS7.0下安装MySql5.6服务
  16. synchronized和lock比较浅析
  17. SSRS Fields cannot be used in page headers or footers
  18. Firemonkey 原生二维码扫描优化
  19. PBRT笔记(9)——贴图
  20. 安装卡巴 OFFICE链接 出现这个过程被中断,由于本机的限制

热门文章

  1. 大数据入门第十八天——kafka整合flume、storm
  2. ptrace注入型病毒“聊天剽窃手”分析
  3. go语言之行--网络编程、http处理流程详情
  4. 20155229《网络对抗技术》Exp:网络欺诈防范
  5. JavaEE笔记(十)
  6. MFC如何为程序添加标题
  7. stl源码剖析 详细学习笔记 set map
  8. SpringBoot日记——错误页处理的配置篇
  9. 【DDD】领域驱动设计实践 —— 业务建模战术
  10. 【亲测有效】Nodepad++/Sublime Text3中Python脚本运行出现语法错误:IndentationError: unindent does not match any outer indentation level解决策略