和Leo一起做爱数学的好孩子之[SHOI2014]概率充电器
著名的电子产品品牌SHOI 刚刚发布了引领世界潮流的下一代电子产品—— 概率充电器:
“采用全新纳米级加工技术,实现元件与导线能否通电完全由真随机数决 定!SHOI 概率充电器,您生活不可或缺的必需品!能充上电吗?现在就试试看 吧!”
SHOI 概率充电器由n-1 条导线连通了n 个充电元件。进行充电时,每条导 线是否可以导电以概率决定,每一个充电元件自身是否直接进行充电也由概率 决定。随后电能可以从直接充电的元件经过通电的导线使得其他充电元件进行 间接充电。
作为SHOI 公司的忠实客户,你无法抑制自己购买SHOI 产品的冲动。在排 了一个星期的长队之后终于入手了最新型号的SHOI 概率充电器。你迫不及待 地将SHOI 概率充电器插入电源——这时你突然想知道,进入充电状态的元件 个数的期望是多少呢?
额又可耻的看了别人做的
我先想的:考虑子树对答案的影响:定义状态为子树有电,这明显是不行的。
因为有父亲供电,所以这是一个不定方程。
无法状态合并
正难则反,考虑子树没电的状态。
定义表示子树没电,而表示父亲未提供电。
很明显一个点没电是两个状态同时发生:
可以DP对于它有两种转移:
1)儿子没电
2)儿子有电但不连通
但是对于G其并不好转移
设
则对于
设
我们知道这个式子上面是当前的概率
而:这个概率是考虑了当前子树的
而这个子树是没有考虑的意义的(你在向他转移)
除掉算F的值就是答案
这个t是没电的转移概率
同理有电但不转移为:
加法原理知:加起来就好了
所以一遍DFS求出F
但是似乎G需要高斯消元
但是:发现对于root没有父亲转移所以
再次DFS求出G最后就算出来了
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+100;
struct Front_star{int u,v,nxt;double w;
}e[N<<2];
int cnt=0;
int first[N];
void add(int u,int v,double w){cnt++;e[cnt].u=u;e[cnt].v=v;e[cnt].w=w;e[cnt].nxt=first[u];first[u]=cnt;
}
double F[N];
double G[N];
double E[N];
void DFS1(int u,int fat){F[u]=(1.0-E[u]);for(int i=first[u];i;i=e[i].nxt){int v=e[i].v;if(v==fat)continue;DFS1(v,u);F[u]=F[u]*(F[v]+(1.0-F[v])*(1.0-e[i].w));}
}
void DFS2(int u,int fat){for(int i=first[u];i;i=e[i].nxt){int v=e[i].v;if(v==fat)continue;double t=F[u]*G[u]/(F[v]+(1.0-F[v])*(1.0-e[i].w));G[v]=t+(1.0-t)*(1.0-e[i].w);DFS2(v,u);}
}
int n;
int main(){scanf("%d",&n);for(int i=1;i<n;++i){int u,v;double w;scanf("%d%d%lf",&u,&v,&w);add(u,v,w/100.0);add(v,u,w/100.0);}for(int i=1;i<=n;++i)scanf("%lf",&E[i]),E[i]/=100.0;G[1]=1.0;DFS1(1,0);DFS2(1,0);double ans=0;for(int i=1;i<=n;++i){ans+=(1.0-F[i]*G[i]);}printf("%.6lf",ans);
}
和Leo一起做爱数学的好孩子之[SHOI2014]概率充电器相关推荐
- 和Leo一起做爱字符串的好孩子量子纠缠
很好的字符串题啊 建立Trie树 纠缠的时候用并查集并起来 然后查询的时候用并查集所代表的节点查询 #include<iostream> #include<cstdio> #i ...
- 和Leo一起做爱字符串的好孩子之 [SDOI2014]数数
题目描述 我们称一个正整数N是幸运数,当且仅当它的十进制表示中不包含数字串集合S中任意一个元素作为其子串.例如当S=(22,333,0233)时,233是幸运数,2333.20233.3223不是幸运 ...
- 和Leo一起做爱线段树的好孩子HDU5238 Calculator
额 神仙题 感觉就是一个暴力啊 线段树维护的是一个类似于键值线段树的东西? 每个叶子节点才表示一个操作 而在PushUp的时候合并答案 这个咋合并? 暴力合并.我们记录下当前模意义下所有的答案 然后暴 ...
- 和Leo一起做爱线段树的好孩子之火车运输
ByteLand火车站(编号0)每天都要发往全国各地N列客运火车,编号1 N.第i列火车的目的地是编号Si的火车站. 对任意车站X,都与X+1车站有铁轨直接相连,因此火车站可以看成数轴上的整数点,第i ...
- 做爱做的事,做有快感的事
还是不发首页了,最近没规划,需要缓一缓.因为发首页还是要符合几点要求的,所以就先停停,不过文章还是得写. 本来十一点多就写好了,没想到洗个澡就过了十二点. ---------------------- ...
- 【高德地图API】汇润做爱地图技术大揭秘
原文:[高德地图API]汇润做爱地图技术大揭秘 昨日收到了高德地图微信公众号的消息推送,说有[一大波免费情趣用品正在袭来],点进去看了一眼,说一个电商公司(估计是卖情趣用品的)用高德云图制作了一张可以 ...
- zzulioj 1825: 会长爱数学 (求循环节)
1825: 会长爱数学 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 5 Solved: 1 SubmitStatusWeb Board Descr ...
- 《程序员的数学》第二册 (概率统计)
<程序员的数学>第二册 (概率统计) <程序员的数学>第二册 (概率统计) 概率的定义 概率的数学定义 三扇门(蒙提霍尔问题)一一飞艇视角 蒙提霍尔问题 正确答案与常见错误 以 ...
- 【豆瓣达人总结】做爱做的事,看有趣的人
惊雀 http://www.douban.com/people/4917689/ 有想法很特别的一位大哥,从另一个角度告诉你什么叫做"人不可貌相",有位友邻说得好:之所以觉得惊先生 ...
最新文章
- JavaScript有哪三部分组成?
- 李德毅院士:希望智能驾驶成为我国继高铁之后又一张新名片
- 平面上的点和直线上的点一样多
- BZOJ 1208 宠物饲养所 Splay
- 【CF】142 Div.1 B. Planes
- oracle12c不能进入到http://localhost:1158/em的解决办法
- Android 线性布局(LinearLayout)相关官方文档 - 布局參数部分
- jax-rs jax-ws_什么是JAX-RS注释?
- (六)api网关服务 zuul-过滤器
- 华为鸿蒙系统腾讯,腾讯内容开放平台
- vue rules 两个输入框不能相等_Vue 学习笔记(二十五):webpack 相关
- (原创)使用tensorflow及anaconda(spyder)时遇到的问题
- PHP图片与文字合成
- 2021 CSDN 年度博客之星评选 TOP 100完整榜单
- timer控件自动停止问题
- 初中计算机考试的题型,教师资格证考试中学信息技术科目题型及分值分布,快看!...
- 计算机木材染色 配色技术的应用技术,人工林木材颜色怎么调配?木材电脑配色技术...
- Windows 10更新 virtualbox(应用)不兼容问题(isn‘t compatible with Windows 10)
- 2018年广东工业大学文远知行杯新生程序设计竞赛 1010 温柔的手彼此相系β
- matlab三维图、二维云图的可视化绘图
热门文章
- 实现分区表性能提升超 10 倍,解密 TDSQL PG 版开源升级特性
- 一位刚做半年的萌新建模师,他为何每个月都能拿到上万薪资?他靠的是什么?
- js实现简单聊天页面,图片随机名字随机
- oracle 存储过程 begin end,存储过程定义多个游标多个begin,存储过程begin
- 【UWP通用应用开发】使用Toast通知与动态磁贴
- 牛客 - 单链表排序
- 简约水墨风文化教育PPT模板
- 『david_lv』老朋友喜相逢 《走出软件作坊》也喜相逢-SD2.0大会第一天
- Qt_Q_DISABLE_COPY
- Alexa Prize 2019 冠亚军方案介绍