链接

题意:n个充电元件形成一棵树,每个点和每条边都有各自的充电概率,元件可以自身充电或者通过其他点和边间接充电,求充电状态元件的期望个数

题解

设1为根节点

设 \(f[x]\) 表示 \(x\) 不从以 \(x\) 为根的子树中充电的概率 ,前提自己不充电,再乘上儿子不充电或者边不充电的概率,因此有

\[f[x]=(1-w[x])\prod(1-(1-f[y])\times w(x,y))
\]

这样进行第一次DP

再设 \(g[x]\) 表示 \(x\) 不充电的概率,他的前提是 \(f[x]\) 并且不从父亲上面充电。

如果从父亲上面充电,前提是父亲从父亲的父亲充电并且边也充电,用1减去这个概率就是不从父亲充电的概率

\[g[y]=f[y]\times(1-w(x,y)\times(1-\frac{g[x]}{1-(1-f[y])\times w(x,y)}))
\]

据说这东西叫换根DP,反正就是两遍DP就是了

#include<bits/stdc++.h>
#define REP(i,a,b) for(int i(a);i<=(b);++i)
using namespace std;
typedef long long ll;
inline int read(){char c;int w;
while(!isdigit(c=getchar()));w=c&15;
while(isdigit(c=getchar()))w=w*10+(c&15);return w;
}
template<typename T,typename U>inline char smax(T&x,const U&y){return x<y?x=y,1:0;}
template<typename T,typename U>inline char smin(T&x,const U&y){return x>y?x=y,1:0;}
const int n=read(),N=5e5+5;
int head[N],tot;double w[N],f[N],g[N],ans;
struct node{int v,nxt;double w;}e[N<<1];
inline void add(int x,int y,double z){e[++tot].v=y,e[tot].w=z,e[tot].nxt=head[x];head[x]=tot;}
void go(int x,int fa){
f[x]=1-w[x];
for(int i=head[x];i;i=e[i].nxt){
const int&y=e[i].v;
if(y!=fa){
go(y,x);
f[x]*=1-(1-f[y])*e[i].w;
}
}
}
void dfs(int x,int fa){
ans+=1-g[x];
for(int i=head[x];i;i=e[i].nxt){
const int&y=e[i].v;
if(y!=fa){
if((1-(1-f[y])*e[i].w)>1e-8)g[y]=f[y]*(1-(1-g[x]/(1-(1-f[y])*e[i].w))*e[i].w);
else g[y]=f[y];
dfs(y,x);
}
}
}
int main(){
REP(i,2,n){
int x=read(),y=read();double z=read()/100.;
add(x,y,z),add(y,x,z);
}
REP(i,1,n)w[i]=read()/100.;ans=0;
go(1,0);g[1]=f[1];dfs(1,0);printf("%f\n",ans);
return 0;
}

[BZOJ3566][SHOI2014]概率充电器 换根树形DP的更多相关文章

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

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

  2. BZOJ2591/LG3047 「USACO12FEB」Nearby Cows 换根树形DP

    问题描述 BZOJ2591 LG3047 题解 换根树形DP. 设 \(opt[i][j]\) 代表 当 \(1\) 为根时,\(i\) 为根的子树中,到 \(i\) 的距离为 \(j\) 的权值和 ...

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

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

  4. BZOJ3566 [SHOI2014]概率充电器 (树形DP&概率DP)

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

  5. BZOJ3566:[SHOI2014]概率充电器(树形DP,概率期望)

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

  6. [BZOJ3566][SHOI2014]概率充电器(概率DP)

    题意:树上每个点有概率有电,每条边有概率导电,求每个点能被通到电的概率. 较为套路但不好想的概率DP. 树形DP肯定先只考虑子树,自然的想法是f[i]表示i在只考虑i子树时,能有电的概率,但发现无法转 ...

  7. Codeforces Round #527 (Div. 3) F. Tree with Maximum Cost 【DFS换根 || 树形dp】

    传送门:http://codeforces.com/contest/1092/problem/F F. Tree with Maximum Cost time limit per test 2 sec ...

  8. POJ3585:Accumulation Degree(换根树形dp)

    Accumulation Degree Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 3425   Accepted: 85 ...

  9. 2018.08.31 bzoj3566: [SHOI2014]概率充电器(概率dp+容斥原理)

    传送门 概率dp好题啊. 用f[i]" role="presentation" style="position: relative;">f[i] ...

随机推荐

  1. 机器学习规则:ML工程最佳实践----rules_of_ml section 1【翻译】

    作者:黄永刚 机器学习规则:ML工程最佳实践 本文旨在指引具有机器学习基础知识的工程师等人,更好的从机器学习的实践中收益.介绍一些应用机器学习需要遵循的规则,类似于Google C++ 风格指南等流行 ...

  2. 《剑指offer》二维数组中的查找

    一.题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 二.输入描述 ar ...

  3. SQLServer中同义词Synonym的用法

    以前一直认为SqlServer中的同义词(Synonym)没有什么用处,所以也一直没有去查它的语法格式.今天碰到一个问题,用Synonym来解决再好不过了.问题是这样子的,我的系统中用到了多个数据库, ...

  4. UI Framework-1: Aura Client API

    Client API The Aura Client API is an API Aura uses to communicate with the client application using ...

  5. 禁用cache

    Z:\src\services\network\network_context.cc:http_cache_enabled

  6. mac ssh报错处理

    总结一下 1.The authenticity of host '[192.168.1.100]:22 ([192.168.1.100]:22)' can't be established. RSA ...

  7. ios svn repository

    xcode默认自带Git和svn,首先讲下xcode4.6.3下配置svn: 1.检測你的mac中是否安装了svn: (1) 打开终端,输入 svn --version 假设出现下图信息,则说明已经安 ...

  8. 罗列几个Android插件化开发框架

    携程插件化框架 ACDD插件化框架 360插件化框架 Android-Plugin-Framework DL APK动态加载框架 部分框架对比 DynamicLoadApk 迁移成本很重:需要使用『t ...

  9. 深度学习 —— 使用 gensim 实现 word2vec

    在自然语言处理领域中,将单词(words)或词语(phases)映射到向量空间(vector space)中可以很容易就得到单词之间的相似度,因为向量空间中两个向量的相似度很容易求得,比如余弦相似度. ...

  10. Hadoop的多节点集群详细启动步骤(3或5节点)

    版本1 利用自己写的脚本来启动,见如下博客 hadoop-2.6.0-cdh5.4.5.tar.gz(CDH)的3节点集群搭建 hadoop-2.6.0.tar.gz的集群搭建(3节点) hadoop ...