bzoj 3566: [SHOI2014]概率充电器【树形概率dp】
设g[u]为这个点被儿子和自己充上电的概率,f[u]为被儿子、父亲和自己充上电的概率
然后根据贝叶斯公式(好像是叫这个),1.P(A+B)=P(A)+P(B)-P(A)*P(B),2.P(A)=(P(A+B)-P(B))/(1-P(B))
g的转移很好想,根据上面的1公式,g[u]=g[u]+g[e[i].to]*e[i].p-g[u]*g[e[i].to]*e[i].p
然后因为root没有父亲,所以f[root]=g[root]
然后是f的转移,首先看父亲可以充电到儿子的概率=父亲能充上电的概率-父亲被儿子充上电的概率,根据上面的2公式也就是 nw=(f[u]-g[e[i].to]*e[i].p)/(1.0-g[e[i].to]*e[i].p)
然后转移就很好做了,和g是一样的:f[e[i].to]=g[e[i].to]+nw*e[i].p-g[e[i].to]*nw*e[i].p;
#include<iostream>
#include<cstdio>
using namespace std;
const int N=500005;
int n,m,h[N],cnt;
double g[N],f[N],ans;
struct qwe
{
int ne,to;
double p;
}e[N<<1];
int read()
{
int r=0,f=1;
char p=getchar();
while(p>'9'||p<'0')
{
if(p=='-')
f=-1;
p=getchar();
}
while(p>='0'&&p<='9')
{
r=r*10+p-48;
p=getchar();
}
return r*f;
}
void add(int u,int v,double w)
{
cnt++;
e[cnt].ne=h[u];
e[cnt].to=v;
e[cnt].p=w;
h[u]=cnt;
}
void dfs1(int u,int fa)
{
for(int i=h[u];i;i=e[i].ne)
if(e[i].to!=fa)
{
dfs1(e[i].to,u);
g[u]=g[u]+g[e[i].to]*e[i].p-g[u]*g[e[i].to]*e[i].p;
}
}
void dfs2(int u,int fa)
{
ans+=f[u];
for(int i=h[u];i;i=e[i].ne)
if(e[i].to!=fa)
{
if(1.0-g[e[i].to]*e[i].p==0.0)
f[e[i].to]=1;
else
{
double nw=(f[u]-g[e[i].to]*e[i].p)/(1.0-g[e[i].to]*e[i].p);
f[e[i].to]=g[e[i].to]+nw*e[i].p-g[e[i].to]*nw*e[i].p;
}
dfs2(e[i].to,u);
}
}
int main()
{
n=read();
for(int i=1;i<n;i++)
{
int x=read(),y=read(),z=read();
add(x,y,(double)z/100.0),add(y,x,(double)z/100.0);
}
for(int i=1;i<=n;i++)
g[i]=read(),g[i]/=100.0;
dfs1(1,0);
f[1]=g[1];
dfs2(1,0);
printf("%.6f\n",ans);
return 0;
}
bzoj 3566: [SHOI2014]概率充电器【树形概率dp】的更多相关文章
- BZOJ3566: [SHOI2014]概率充电器 树形+概率dp
3566: [SHOI2014]概率充电器 Time Limit: 40 Sec Memory Limit: 256 MBSubmit: 1888 Solved: 857[Submit][Stat ...
- 【bzoj3566】[SHOI2014]概率充电器 树形概率dp
题目描述 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品——概率充电器:“采用全新纳米级加工技术,实现元件与导线能否通电完全由真随机数决定!SHOI 概率充电器,您生活不可或缺的 ...
- BZOJ 3566 概率充电器(树形概率DP)
题面 题目传送门 分析 定义f(i)f(i)f(i)为iii点不被点亮的概率,p(i)p(i)p(i)为iii自己被点亮的概率,p(i,j)p(i,j)p(i,j)表示i−ji-ji−j 这条边联通的 ...
- BZOJ_3566_[SHOI2014]概率充电器_概率+树形DP
BZOJ_3566_[SHOI2014]概率充电器_概率+树形DP Description 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品——概率充电器: “采用全新纳米级加工技 ...
- BZOJ 3566: [SHOI2014]概率充电器 [树形DP 概率]
3566: [SHOI2014]概率充电器 题意:一棵树,每个点\(q[i]\)的概率直接充电,每条边\(p[i]\)的概率导电,电可以沿边传递使其他点间接充电.求进入充电状态的点期望个数 糖教题解传 ...
- 【BZOJ 3566】 3566: [SHOI2014]概率充电器 (概率树形DP)
3566: [SHOI2014]概率充电器 Description 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品——概率充电器:“采用全新纳米级加工技术,实现元件与导线能否通电 ...
- BZOJ 3566: [SHOI2014]概率充电器( 树形dp )
通过一次dfs求出dp(x)表示节点x考虑了x和x的子树都没成功充电的概率, dp(x) = (1-p[x])π(1 - (1-dp[son])*P(edge(x, son)).然后再dfs一次考虑节 ...
- bzoj 3566: [SHOI2014]概率充电器
Description 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器:"采用全新纳米级加工技术,实现元件与导线能否通电完全由真随机数决定!SHOI 概率 ...
- BZOJ3566 [SHOI2014]概率充电器 (树形DP&概率DP)
3566: [SHOI2014]概率充电器 Description 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品——概率充电器:“采用全新纳米级加工技术,实现元件与导线能否通电 ...
- luogu P4284 [SHOI2014]概率充电器 期望 概率 树形dp
LINK:概率充电器 大概是一个比较水的题目 不过有一些坑点. 根据期望的线性性 可以直接计算每个元件的期望 累和即为答案. 考虑统计每一个元件的概率的话 那么对其有贡献就是儿子 父亲 以及自己. 自 ...
随机推荐
- msp430入门编程35
msp430中C语言的可移植--规划软件层次
- 洛谷 P4720 【模板】扩展 / 卢卡斯 模板题
扩展卢卡斯定理 : https://www.luogu.org/problemnew/show/P4720 卢卡斯定理:https://www.luogu.org/problemnew/show/P3 ...
- java自动识别用户上传的文本文件编码
原文:http://www.open-open.com/code/view/1420514359234 经常碰到用户上传的部分数据文本文件乱码问题,又不能限制用户的上传的文件编码格式(这样对客户的要求 ...
- Apache 处理svg工具包Apache(tm) Batik SVG Toolkit
Apache™ Batik SVG Toolkit¶ Overview¶ Batik is a Java-based toolkit for applications or applets that ...
- ubuntu安装ftp环境
ubuntu安装ftp环境 安装: apt install vsftpd 启动: service vsftpd start 查看状态: service vsftpd status root登录: vi ...
- Ulua_toLua_基本案例(一)
Ulua_toLua_基本案例 在Untiy中用Lua.必需要LuaInterface.LuaInterface的介绍请看:点击打开链接 能够先光写Lua,生成.lua的纯文件.再Unity中通过,l ...
- Cocos2d-x 3.1.1 学习日志12--一Cocos2dx3.1.1移植到Android平台的方法(最实用最有效的!!)
须要用到工具(依照顺序): 1.JDK 2.NDK 3.ANT 4.Adt-bundle-windows 将JDK文件夹下的bin文件夹路径加入到系统环境变量中. 解压NDK 解压Adt-bundle ...
- #define中的#和##作用
#define语句中的#是把参数字符串化,##是连接两个参数成为一个整体. #define FACTORY_REF(name) { #name, Make##name } 中#name就是将传入的na ...
- linux系统编程:线程同步-相互排斥量(mutex)
线程同步-相互排斥量(mutex) 线程同步 多个线程同一时候訪问共享数据时可能会冲突,于是须要实现线程同步. 一个线程冲突的演示样例 #include <stdio.h> #includ ...
- js常用的正则表达操作
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...