概率充电器(shoi2014)
出处[辗转山河弋流歌 by 空灰冰魂]
著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品——概率充电器:“采用全新纳米级加工技术,实现元件与导线能否通电完全由真随机数决定! SHOI 概率充电器,您生活不可或缺的必需品!能充上电吗?现在就试试看 吧!”SHOI 概率充电器由 n-1 条导线连通了 n 个充电元件。进行充电时,每条导线是否可以导电以概率决定,每一个充电元件自身是否直接进行充电也由概率 决定。随后电能可以从直接充电的元件经过通电的导线使得其他充电元件进行间接充电。作为 SHOI 公司的忠实客户,你无法抑制自己购买 SHOI 产品的冲动。在排了一个星期的长队之后终于入手了最新型号的 SHOI 概率充电器。你迫不及待 地将 SHOI 概率充电器插入电源——这时你突然想知道,进入充电状态的元件个数的期望是多少呢?输入第一行一个整数: nnn。概率充电器的充电元件个数。充电元件由 1−n1-n1−n 编号。之后的 n-1 行每行三个整数a,b,pa, b, pa,b,p,描述了一根导线连接了编号为 aaa 和 bbb 的充电元件,通电概率为 p%。第 n+2n+2n+2 行 nnn 个整数:qiqiqi。表示 i 号元件直接充电的概率为 qi%。输出输出一行一个实数,为能进入充电状态的元件个数的期望,四舍五入到小数点后 6 位小数。
样例输入1
3
1 2 50
1 3 50
50 0 0
样例输出1
1.000000
样例输入1
5
1 2 90
1 3 80
1 4 70
1 5 60
100 10 20 30 40
样例输出2
4.300000
提示
【数据规模】对于 30%的数据, n≤5000。对于 100%的数据, n≤500000, 0≤p,qi≤100。
CODE
#include<bits/stdc++.h>
using namespace std;
const int N=5e5+5;
struct fjy{int nxt,v;double w;
}e[N<<1];
int cnt,fir[N],fa[N];
double p[N],h[N],g[N],ans=0.0;//p[i]表示以i为根的子树中通电节点的期望值,g[i]表示i的父节点对i的通电节点个数期望的贡献,h[i]表示以i为根结点的子树对i的父节点通电节点个数期望的贡献
void add(int u,int v,double w){e[++cnt].v=v;e[cnt].w=w;e[cnt].nxt=fir[u];fir[u]=cnt;
}
int ui,vi,wi,c,n;
void dfs1(int u,int f){fa[u]=f;for(int i=fir[u];i;i=e[i].nxt){if(e[i].v==f) continue;dfs1(e[i].v,u);h[e[i].v]=p[e[i].v]+(1.00-p[e[i].v])*(1-e[i].w);//由于对父节点做的贡献需要统计完过后再做,故在处理父节点时计算p[u]*=h[e[i].v]; }
}
void dfs(int u,int f){ans+=1.0-p[u]*g[u];for(int i=fir[u];i;i=e[i].nxt){if(e[i].v==fa[u]) continue;double t=h[e[i].v]<1e-6?0.0:g[u]*p[u]/h[e[i].v]; g[e[i].v]=t+(1.0-t)*(1.0-e[i].w);dfs(e[i].v,u);}
}
int main(){int size=100<<20;__asm__("movq %0,%%rsp\n"::"r"((char*)malloc(size)+size));//此处要开手工栈 scanf("%d",&n);for(int i=1;i<n;i++){scanf("%d%d%d",&ui,&vi,&wi);add(ui,vi,wi/100.0),add(vi,ui,wi/100.0);}for(int i=1;i<=n;i++){scanf("%d",&c);p[i]=double(1.0-c/100.0);}dfs1(1,0); g[1]=1.0;dfs(1,0);//for(int i=1;i<=n;i++) ans+=1-p[i]*g[i];printf("%.6lf",ans);exit(0);//开手工栈无法用return退出return 0;
}
概率充电器(shoi2014)相关推荐
- 洛谷 P4284 [SHOI2014]概率充电器 解题报告
P4284 [SHOI2014]概率充电器 题目描述 著名的电子产品品牌SHOI 刚刚发布了引领世界潮流的下一代电子产品-- 概率充电器: "采用全新纳米级加工技术,实现元件与导线能否通电完 ...
- BZOJ3566 [SHOI2014]概率充电器 (树形DP概率DP)
3566: [SHOI2014]概率充电器 Description 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器: "采用全新纳米级加工技术,实现元件与 ...
- 【BZOJ】3566: [SHOI2014]概率充电器
[算法]树型DP+期望DP [题意]一棵树上每个点均有直接充电概率qi%,每条边有导电概率pi%,问期望有多少结点处于充电状态? [题解]引用自:[BZOJ3566][SHOI2014]概率充电器 树 ...
- [SHOI2014]概率充电器 dp
[SHOI2014]概率充电器 时间限制: 4 Sec 内存限制: 256 MB 题目描述 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器: "采用全 ...
- [BZOJ3566][SHOI2014]概率充电器
B. 概率充电器 题目描述 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器: "采用全新纳米级加工技术,实现元件与导线能否通电完全由真随机数决定!SHOI ...
- 【SHOI2014】【BZOJ3566】概率充电器
Description 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器: "采用全新纳米级加工技术,实现元件与导线能否通电完全由真随机数决定!SHOI 概 ...
- 和Leo一起做爱数学的好孩子之[SHOI2014]概率充电器
著名的电子产品品牌SHOI 刚刚发布了引领世界潮流的下一代电子产品-- 概率充电器: "采用全新纳米级加工技术,实现元件与导线能否通电完全由真随机数决 定!SHOI 概率充电器,您生活不可或 ...
- BZOJ 3566: [SHOI2014]概率充电器 期望DP + 树形DP
Time Limit: 40 Sec Memory Limit: 256 MB Submit: 1276 Solved: 558 Description 著名的电子产品品牌 SHOI 刚刚发布了引领世 ...
- 【概率与期望】【SHOI2014】概率充电器
[描述] 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器: "采用全新纳米级加工技术,实现元件与导线能否通电完全由真随机数决定! SHOI 概率充电器,您 ...
最新文章
- java lambda表达式_高性能的 Lambda 表达式,简洁优雅图文并茂
- MxGraph从入门到精通之4:布局
- 检查卷位图时发现损坏怎么修复_中频弯管严密性如何测试?怎么修复中频弯管?...
- 理解有符号数和无符号数的区别
- 海思Hi3516A(5)3D降噪
- Linux-使用之vim出现的问题
- 损失函数的意义和作用_损失函数的可视化:浅论模型的参数空间与正则
- 21天学MySQL_SQL21天自学通.pdf
- 05Vue.js快速入门-Vue实例详解与生命周期
- java web mysql备份,Java Web 实现Mysql 数据库备份与还原
- 硕士转行学python_0基础转行编程学习Python是最快的途径吗?
- “仁、义、礼、智、信、恕、忠、孝、悌、、节、恕、勇、让”
- 计算机机房中使用ups的作用是什么,机房监控UPS的作用是什么?你可知道?
- PMP估算方法对比:参数估算、类比估算、自下而上估算、三点估算和粗略量级估算
- svn创建版本库以及创建其下目录
- 51CTO学院三周年-我的rhce7认证之路
- mysql数据备份及完全卸载
- 战地之王服务器维护启动失败,《战地之王》战地之王韩服官方各种问题攻略
- GTSAM中ISAM2和IncrementalFixedLagSmoother说明
- 面试中的最常被问到的两种锁