解题:SHOI 2014 概率充电器
显然就是在求概率,因为期望乘的全是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 概率充电器的更多相关文章
- [bzoj 3566][SHOI 2014]概率充电器
传送门 Description SHOI 概率充电器由 n-1 条导线连通了 n 个充电元件.进行充电时,每条导线是否可以导电以概率决定,每一个充电元件自身是否直接进行充电也由概率决定. 随后电能可以 ...
- [ SHOI 2014 ] 概率充电器
\(\\\) \(Description\) 一个含\(N\)个元器件的树形结构充电器,第\(i\)个元器件有\(P_i\)的概率直接从外部被充电,连接\(i,j\)的边有\(P_{i,j}\)的概率 ...
- 洛谷 P4284 [SHOI2014]概率充电器 解题报告
P4284 [SHOI2014]概率充电器 题目描述 著名的电子产品品牌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 概率 ...
- [SHOI2014]概率充电器
Description 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品——概率充电器: “采用全新纳米级加工技术,实现元件与导线能否通电完全由真随机数决定!SHOI 概率充电器, ...
- Loj #2192. 「SHOI2014」概率充电器
Loj #2192. 「SHOI2014」概率充电器 题目描述 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器: 「采用全新纳米级加工技术,实现元件与导线能否通电完 ...
- [SHOI2014]概率充电器(概率+换根dp)
著名的电子产品品牌SHOI 刚刚发布了引领世界潮流的下一代电子产品—— 概率充电器: “采用全新纳米级加工技术,实现元件与导线能否通电完全由真随机数决 定!SHOI 概率充电器,您生活不可或缺的必需品 ...
- BZOJ3566: [SHOI2014]概率充电器 树形+概率dp
3566: [SHOI2014]概率充电器 Time Limit: 40 Sec Memory Limit: 256 MBSubmit: 1888 Solved: 857[Submit][Stat ...
随机推荐
- ILSVRC2016目标检测任务回顾——视频目标检测(VID)
转自知乎<深度学习大讲堂> 雷锋网(公众号:雷锋网)按:本文作者王斌,中科院计算所前瞻研究实验室跨媒体计算组博士生,导师张勇东研究员.2016年在唐胜副研究员的带领下,作为计算所MCG-I ...
- Codeforces 946D - Timetable (预处理+分组背包)
题目链接:Timetable 题意:Ivan是一个学生,在一个Berland周内要上n天课,每天最多会有m节,他能逃课的最大数量是k.求他在学校的时间最小是多少? 题解:先把每天逃课x节在学校呆的最小 ...
- 洛咕 P3704 [SDOI2017]数字表格
大力推式子 现根据套路枚举\(\gcd(i,j)\) \(ans=\Pi_{x=1}^nfib[x]^{\sum_{i=1}^{n/x}\sum_{j=1}^{n/x}[\gcd(i,j)=1]}\) ...
- flask_admin 笔记二 授权和权限
权限当然就是让有应该权限的用户能执行某些操作,把没有权限的用户限制在外面.Flask-admin提供了几种方法来处理: 1, Http basic Auth 最简单的身份验证形式是HTTP基本身份验证 ...
- 【亲测有效】Nodepad++/Sublime Text3中Python脚本运行出现语法错误:IndentationError: unindent does not match any outer indentation level解决策略
我在开发游戏的时候,发现一个python脚本,本来都运行好好的,然后写了几行代码,而且也都确保每行都对齐了,但是运行的时候,却出现语法错误: IndentationError: unindent do ...
- 记录Jenkins+gitlab+maven
摘要 昨天抽空将jenkins+gitlab(git)+maven整合了一下,再次记录一下以防下次再去查找省的麻烦. git.maven.java配置 启动jenkins之后进入系统管理里面的Glob ...
- Revit二次开发-根据视图阶段(Phase)创建房间
最近开发业务中,有一个自动创建房间的功能,很自然的想到了Document.NewRooms2方法.但是当前功能的特殊之处在于,Revit项目视图是分阶段(Phase)的,不同阶段的房间是互相独立的. ...
- cocos2dx内存优化
纹理消耗了大量内存 在大部分情况下,是纹理(textures)消耗了游戏程序大量的内存.因此,纹理是我们首要考虑优化的对象 纹理加载 cocos2d里面纹理加载分为两个阶段:从图片文件中创建一个Ima ...
- 原生 JavaScript 实现 AJAX、JSONP
相信大多数前端开发者在需要与后端进行数据交互时,为了方便快捷,都会选择JQuery中封装的AJAX方法,但是有些时候,我们只需要JQuery的AJAX请求方法,而其他的功能用到的很少,这显然是没必要的 ...
- opencv2 用imwrite 抽取并保存视频图像帧
最近在写一个车辆检测程序,程序中需要获取图像帧,并保存为图片,且放到指定目录中去,我在网上查了很多发现都是opencv1的有关操作,没有opencv2的操作,我参考网上的例子,结合着用opencv2新 ...