解题:SHOI 2014 概率充电器
2024-10-14 03:02:24
显然就是在求概率,因为期望乘的全是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 ;
}
最新文章
- hellocharts包的使用心得
- MSDTC故障排除,DTCTester用法 (二)
- Javascript中的链表
- Delphi 有关Dbgrideh控件:变色处理
- 访问本地Access 数据出错
- [转]Informatica vs SSIS
- adblockTester通过js检测用户浏览器是否安装了AdBlock
- shell基础知识
- KMP算法中next函数的理解
- Android STL PORT
- JavaScript js 精确、保留小数方法
- URAL-1991 The battle near the swamp 水题
- JavaWeb学习笔记之Servlet(二)
- openwrt上网配置的一些理解(二)
- 【CNMP系列】CentOS7.0下安装MySql5.6服务
- synchronized和lock比较浅析
- SSRS Fields cannot be used in page headers or footers
- Firemonkey 原生二维码扫描优化
- PBRT笔记(9)——贴图
- 安装卡巴 OFFICE链接 出现这个过程被中断,由于本机的限制
热门文章
- 大数据入门第十八天——kafka整合flume、storm
- ptrace注入型病毒“聊天剽窃手”分析
- go语言之行--网络编程、http处理流程详情
- 20155229《网络对抗技术》Exp:网络欺诈防范
- JavaEE笔记(十)
- MFC如何为程序添加标题
- stl源码剖析 详细学习笔记 set map
- SpringBoot日记——错误页处理的配置篇
- 【DDD】领域驱动设计实践 —— 业务建模战术
- 【亲测有效】Nodepad++/Sublime Text3中Python脚本运行出现语法错误:IndentationError: unindent does not match any outer indentation level解决策略