题面

显然就是在求概率,因为期望乘的全是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 ;
}

解题:SHOI 2014 概率充电器的更多相关文章

  1. [bzoj 3566][SHOI 2014]概率充电器

    传送门 Description SHOI 概率充电器由 n-1 条导线连通了 n 个充电元件.进行充电时,每条导线是否可以导电以概率决定,每一个充电元件自身是否直接进行充电也由概率决定. 随后电能可以 ...

  2. [ SHOI 2014 ] 概率充电器

    \(\\\) \(Description\) 一个含\(N\)个元器件的树形结构充电器,第\(i\)个元器件有\(P_i\)的概率直接从外部被充电,连接\(i,j\)的边有\(P_{i,j}\)的概率 ...

  3. 洛谷 P4284 [SHOI2014]概率充电器 解题报告

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

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

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

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

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

  6. [SHOI2014]概率充电器

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

  7. Loj #2192. 「SHOI2014」概率充电器

    Loj #2192. 「SHOI2014」概率充电器 题目描述 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器: 「采用全新纳米级加工技术,实现元件与导线能否通电完 ...

  8. [SHOI2014]概率充电器(概率+换根dp)

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

  9. BZOJ3566: [SHOI2014]概率充电器 树形+概率dp

    3566: [SHOI2014]概率充电器 Time Limit: 40 Sec  Memory Limit: 256 MBSubmit: 1888  Solved: 857[Submit][Stat ...

随机推荐

  1. C# event线程安全

    突然想到有关C#中使用event特性时关于线程安全的问题,以前虽然有遵从“复制引用+null判断”的模式(盲目地),但没有深入了解和思考. 为之查询了资料和实验,对此有了进一步的理解. 一般event ...

  2. HTML5 本地存储实现购物车功能

    在家休陪产假,无聊,看自己以前的项目,突然发现之前写的购物车都是用数据库实现的,数据库实现购物车原则上没什么问题,但是需要和数据库交互,这样无意之间降低了程序的效率.今天突发奇想,如果能用HTML5本 ...

  3. EZ 2018 05 01 NOIP2018 模拟赛(十一)

    莫名其妙暴涨Rating 其实题目都挺好挺简单的,但是越简单就越容易ZZ 不理解问什么第一题这么多人找环 不过T2是真心细节题,T3太难了 题目戳这里 T1 仔细分析题意发现那个交换规则就是废话,如果 ...

  4. P3302 [SDOI2013]森林

    树上第k小是裸题,然后连边操作显然只能用启发式合并 连边之后重构小的部分,重构一遍主席树和倍增数组,水的一批(逃 #include<bits/stdc++.h> #define il in ...

  5. 解决 配置springmvc拦截所有请求后请求静态资源404的问题

    <servlet-mapping> <servlet-name>spring-servlet</servlet-name> <url-pattern>/ ...

  6. Accer 4752G添加固态硬盘 双系统

    (此文一直在草稿箱里躺了一年,略作修改后发布~) 背景:电脑是2011年年末买的,用到现在也已经5年多了,好在没坏过什么硬件,有过2年疯狂打LOL的经历,之后电脑就打不动了,FPS始终上不去,启动游戏 ...

  7. 使用node-webkit(v0.35.5)和innosetup(3.6.1)打包将web程序打包为桌面客户端(安装包)

    这边主要是有一个客户,需要在电视机上安装一个客户端,含有视频直播功能:刚开始我们采用的webapp打包成apk安装在电视机上,发现摄像头监控画面根本无法播放(apk在手机上可以正常播放视频):排除一些 ...

  8. Hadoop 部署文档

    Hadoop 部署文档 1 先决条件 2 下载二进制文件 3 修改配置文件 3.1 core-site.xml 3.2 hdfs-site.xml 3.3 mapred-site.xml 3.4 ya ...

  9. Bootstrap 样式设计 栅格系统

    .col-xs- 超小屏幕 手机 (<768px) .col-sm- 小屏幕 平板 (≥768px) .col-md- 中等屏幕 桌面显示器 (≥992px) .col-lg- 大屏幕 大桌面显 ...

  10. PAT甲题题解-1119. Pre- and Post-order Traversals (30)-(根据前序、后序求中序)

    (先说一句,题目还不错,很值得动手思考并且去实现.) 题意:根据前序遍历和后序遍历建树,输出中序遍历序列,序列可能不唯一,输出其中一个即可. 已知前序遍历和后序遍历序列,是无法确定一棵二叉树的,原因在 ...