LINK:概率充电器

大概是一个比较水的题目 不过有一些坑点.

根据期望的线性性 可以直接计算每个元件的期望 累和即为答案.

考虑统计每一个元件的概率的话 那么对其有贡献就是儿子 父亲 以及自己.

自己很容易算 儿子也很容易 父亲的话需要dfs一下父亲那边即可。

不过这样做是n^2。一个容易误解的地方 儿子能传给父亲父亲能传给儿子 这样就带环了Y.

不过 我们单独考虑时 当儿子传给父亲时 儿子一定是亮的 所以这个dp是无环的。

容易想到换根dp.不过需要算出去掉某个儿子之后的概率.

设当前概率为now,以前概率为x 当前儿子贡献的概率为tn 那么显然有 \(now=x+(1-x)\cdot tn\)

化简一下 \((1-tn)x=now-tn\)

值得一提的是tn为1的时候右边会除以0 这是不合法的 而我们也没有什么做法可以解决这个问题。

一个小trick 其实可以不用给儿子去传递概率了 因为儿子此时概率为1 不传递也是正确的。

const int MAXN=500010;
int n,len;
int lin[MAXN],ver[MAXN<<1],nex[MAXN<<1];
db ans,e[MAXN<<1],a[MAXN],f[MAXN];
inline void add(int x,int y,int z)
{
ver[++len]=y;
nex[len]=lin[x];
lin[x]=len;
e[len]=z*1.0/100;
}
inline void dfs(int x,int fa)
{
f[x]=a[x];
go(x)
{
if(tn!=fa)
{
dfs(tn,x);
f[x]+=(1-f[x])*f[tn]*e[i];
}
}
}
inline void dp(int x,int fa,db v)
{
ans+=f[x]+(1-f[x])*v;
go(x)
{
if(tn!=fa)
{
if(fabs(f[tn]*e[i]-1)<=EPS)dp(tn,x,0);
else
{
db ww=(f[x]-f[tn]*e[i])/(1-f[tn]*e[i]);
dp(tn,x,((1-ww)*v+ww)*e[i]);
}
}
}
}
int main()
{
freopen("1.in","r",stdin);
get(n);
rep(2,n,i)
{
int x,y,z;
get(x);get(y);get(z);
add(x,y,z);add(y,x,z);
}
rep(1,n,i)a[i]=read()*1.0/100;
dfs(1,0);dp(1,0,0);
printf("%.6lf",ans);return 0;
}

luogu P4284 [SHOI2014]概率充电器 期望 概率 树形dp的更多相关文章

  1. [BZOJ3566][SHOI2014]概率充电器 换根树形DP

    链接 题意:n个充电元件形成一棵树,每个点和每条边都有各自的充电概率,元件可以自身充电或者通过其他点和边间接充电,求充电状态元件的期望个数 题解 设1为根节点 设 \(f[x]\) 表示 \(x\) ...

  2. 洛谷 P4284 [SHOI2014]概率充电器 概率与期望+换根DP

    洛谷 P4284 [SHOI2014]概率充电器 概率与期望+换根DP 题目描述 著名的电子产品品牌\(SHOI\) 刚刚发布了引领世界潮流的下一代电子产品-- 概率充电器: "采用全新纳米 ...

  3. BZOJ_3566_[SHOI2014]概率充电器_概率+树形DP

    BZOJ_3566_[SHOI2014]概率充电器_概率+树形DP Description 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品——概率充电器: “采用全新纳米级加工技 ...

  4. 【BZOJ3566】[SHOI2014]概率充电器 期望+树形DP

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

  5. 【Luogu】P4284概率充电器(概率树形DP)

    题目链接 这题好神啊…… 设f[i]为i没电的概率,初始化$f[i]=1-q[i]$ 之后x的电有三个来源: 1.x自己有电 2.x的儿子给它传来了电 3.x的父亲给它传来了电 对于2和3操作分别做一 ...

  6. 【题解】Luogu P4284 [SHOI2014]概率充电器

    原题传送门 我们知道,每个电器充电对充电电器数的贡献都是相等的1,所以若第\(i\)个电器有\(p_i\)的概率充电时 \[E=\sum_{i=1}^np_i\] 我们考虑如何求\(p_i\),根据树 ...

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

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

  8. BZOJ3566 SHOI2014 概率充电器 【概率DP】

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

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

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

随机推荐

  1. web图片前端裁剪功能实现_利用html5 canvas技术实现图片裁剪

    用户上传头像然后截图的需求很常见,很多做法是把图像发送到后端,把裁剪后的结果发送给浏览器,这种方式会增加处理时延.最近正好学习了HTML5里的canvas,发现它的图片处理功能比较强大,就打算用can ...

  2. Redis基础01-redis的数据结构

    参考书:<redis设计与实现> Redis虽然底层是用C语言写的,但是底层的数据结构并不是直接使用C语言的数据结构,而是自己单独封装的数据结构: Redis的底层数据结构由,简单动态字符 ...

  3. 洛谷P3237 [HNOI2014]米特运输(树形dp)

    解题报告 题干 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题. D星上有N个城市,我们将其顺序编号为1到N,1号城市为首都. ...

  4. JSOI BZOJ4472 salesman

    题目传送门 题目大意 某售货员小T要到若干城镇去推销商品,由于该地区是交通不便的山区,任意两个城镇之间都只有唯一的可能经过其它城镇的路线. 小T 可以准确地估计出在每个城镇停留的净收益.这些净收益可能 ...

  5. DLL注入之修改PE静态注入

    DLL注入之修改PE静态注入 0x00 前言 我们要注入的的力量功能是下载baidu首页数据.代码如下: #include "stdio.h" #include"stdi ...

  6. mysql无法启动服务,错误1067

    安装mysql,提示安装成功后,启动服务,提示错误1067 前情提示:mysql安装文件和配置文件没有放在Program File文件夹下. 解决办法:将my.ini文件剪切放在Program Fil ...

  7. CVE-2020-0796 漏洞复现

    漏洞介绍 2020年3月10日,微软在其官方SRC发布了CVE-2020-0796的安全公告(ADV200005,MicrosoftGuidance for Disabling SMBv3 Compr ...

  8. php基础学习中认为重点的知识

    <?php ... ?> 简写成 <? ... ?> 服务器中可以通过php.ini中配置short_open_tag为on来实现 php语句必须以分号  ; 结尾 .  连接 ...

  9. Python面向对象02/类的空间问题、类与对象之间的关系、类与类之间的关系

    Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 2. 类与对象之间 ...

  10. python 面向对象专题(一):面向对象初识、面向对象结构、类、self、实例化对象

    https://www.cnblogs.com/liubing8/p/11301344.html 目录 Python面向对象01 /面向对象初识.面向对象结构.类.self.实例化对象 1. 面向对象 ...