解题:SHOI 2014 概率充电器

题面

显然就是在求概率,因为期望乘的全是1.。。。然后就推推推啊

设$fgg[i]$表示这个点父亲没给他充上电的概率,$sgg[i]$表示这个点子树(和它自己没给他充上电的概率),然后这个点没充上电的概率就是$fgg[i]*sgg[i]$

我们发现我们在树上转移的话$fgg$反过来依赖儿子,也就是依赖于$sgg$,那我们先把$sgg$求出来

$sgg[i]=$

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 using namespace std;
 5 const int N=500005,M=1e6+60;
 6 int p[N],noww[M],goal[M],n,t1,t2,cnt;
 7 double val[M],pos[N],sgg[N],fgg[N],mem[N],t3,ans;
 8 void Link(int f,int t,double v)
 9 {
10     noww[++cnt]=p[f],p[f]=cnt;
11     goal[cnt]=t,val[cnt]=v;
12 }
13 void Gettre(int nde,int fth)
14 {
15     sgg[nde]=1-pos[nde];
16     for(int i=p[nde];i;i=noww[i])
17         if(goal[i]!=fth)
18         {
19             int g=goal[i]; Gettre(g,nde);
20             mem[g]=sgg[g]+(1-sgg[g])*(1-val[i]);
21             sgg[nde]*=mem[g];
22         }
23 }
24 void Getans(int nde,int fth)
25 {
26     ans-=sgg[nde]*fgg[nde];
27     for(int i=p[nde];i;i=noww[i])
28         if(goal[i]!=fth)
29         {
30             int g=goal[i];
31             double fag=sgg[nde]*fgg[nde]/mem[g];
32             fgg[g]=fag+(1-fag)*(1-val[i]),Getans(g,nde);
33         }
34 }
35 int main()
36 {
37     scanf("%d",&n),ans=n;
38     for(int i=1;i<n;i++)
39     {
40         scanf("%d%d%lf",&t1,&t2,&t3);
41         Link(t1,t2,t3/100),Link(t2,t1,t3/100);
42     }
43     for(int i=1;i<=n;i++)
44         scanf("%lf",&pos[i]),pos[i]/=100;
45     Gettre(1,0),fgg[1]=1,Getans(1,0),printf("%.6f",ans);
46     return 0;
47 }

原文地址:https://www.cnblogs.com/ydnhaha/p/10283636.html

时间: 2024-10-20 01:09:11

解题:SHOI 2014 概率充电器的相关文章

[bzoj 3566][SHOI 2014]概率充电器

传送门 Description SHOI 概率充电器由 n-1 条导线连通了 n 个充电元件.进行充电时,每条导线是否可以导电以概率决定,每一个充电元件自身是否直接进行充电也由概率决定. 随后电能可以从直接充电的元件经过通电的导线使得其他充电元件进行间接充电. 进入充电状态的元件个数的期望是多少呢? Solution \[ E=\sum f_i\ \ \ 其中f_i表示节点i通电的概率 \] 那么怎么求\(f_i\)呢?显然,一个点通电有三种情况:来自i的父亲节点.来自i的某个儿子节点.来自i自

BZOJ 3566 SHOI 2014 概率充电器 概率DP

题目大意:给出一棵树,每个节点都有一个充电概率,每一条边有一个导电概率,求期望有多少个点充电. 思路:写不出题解,粘一个详细的地址:http://wyfcyx.is-programmer.com/posts/74623.html CODE: #define _CRT_SECURE_NO_WARNINGS #include <cstdio> #include <cstring> #include <iomanip> #include <iostream> #i

[SHOI2014]概率充电器

[SHOI2014]概率充电器 题目 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品——概率充电器:“采用全新纳米级加工技术,实现元件与导线能否通电完全由真随机数决定!SHOI 概率充电器,您生活不可或缺的必需品!能充上电吗?现在就试试看吧!”SHOI 概率充电器由 n-1 条导线连通了 n 个充电元件.进行充电时,每条导线是否可以导电以概率决定,每一个充电元件自身是否直接进行充电也由概率决定.随后电能可以从直接充电的元件经过通电的导线使得其他充电元件进行间接充电.作为 S

Bzoj3566 [SHOI2014]概率充电器

Time Limit: 40 Sec  Memory Limit: 256 MBSubmit: 999  Solved: 428 Description 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品——概率充电器:“采用全新纳米级加工技术,实现元件与导线能否通电完全由真随机数决定!SHOI 概率充电器,您生活不可或缺的必需品!能充上电吗?现在就试试看吧!”SHOI 概率充电器由 n-1 条导线连通了 n 个充电元件.进行充电时,每条导线是否可以导电以概率决定,每一个充电元

bzoj 3566: [SHOI2014]概率充电器

Description 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器:"采用全新纳米级加工技术,实现元件与导线能否通电完全由真随机数决定!SHOI 概率充电器,您生活不可或缺的必需品!能充上电吗?现在就试试看吧!"SHOI 概率充电器由 n-1 条导线连通了 n 个充电元件.进行充电时,每条导线是否可以导电以概率决定,每一个充电元件自身是否直接进行充电也由概率决定.随后电能可以从直接充电的元件经过通电的导线使得其他充电元件进行间接充电.作为 SHO

【bzoj3566】[SHOI2014]概率充电器 树形概率dp

题目描述 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品——概率充电器:“采用全新纳米级加工技术,实现元件与导线能否通电完全由真随机数决定!SHOI 概率充电器,您生活不可或缺的必需品!能充上电吗?现在就试试看吧!”SHOI 概率充电器由 n-1 条导线连通了 n 个充电元件.进行充电时,每条导线是否可以导电以概率决定,每一个充电元件自身是否直接进行充电也由概率决定.随后电能可以从直接充电的元件经过通电的导线使得其他充电元件进行间接充电.作为 SHOI 公司的忠实客户,你无

【BZOJ3566】概率充电器(动态规划)

[BZOJ3566]概率充电器(动态规划) 题面 BZOJ Description 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器: "采用全新纳米级加工技术,实现元件与导线能否通电完全由真随机数决定!SHOI 概率充电器,您生活不可或缺的必需品!能充上电吗?现在就试试看吧! " SHOI 概率充电器由 n-1 条导线连通了 n 个充电元件.进行充电时,每条导线是否可以导电以概率决定,每一个充电元件自身是否直接进行充电也由概率决定. 随后电能可以从直

P4284 [SHOI2014]概率充电器

链接:https://www.luogu.org/problemnew/show/P4284 题目描述 著名的电子产品品牌SHOI 刚刚发布了引领世界潮流的下一代电子产品-- 概率充电器: "采用全新纳米级加工技术,实现元件与导线能否通电完全由真随机数决 定!SHOI 概率充电器,您生活不可或缺的必需品!能充上电吗?现在就试试看 吧!" SHOI 概率充电器由n-1 条导线连通了n 个充电元件.进行充电时,每条导 线是否可以导电以概率决定,每一个充电元件自身是否直接进行充电也由概率 决

Loj #2192. 「SHOI2014」概率充电器

Loj #2192. 「SHOI2014」概率充电器 题目描述 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器: 「采用全新纳米级加工技术,实现元件与导线能否通电完全由真随机数决定!SHOI 概率充电器,您生 活不可或缺的必需品!能充上电吗?现在就试试看吧!」 SHOI 概率充电器由 \(n-1\) 条导线连通了 \(n\) 个充电元件.进行充电时,每条导线是否可以导电以 概率决定,每一个充电元件自身是否直接进行充电也由概率决定.随后电能可以从直接充电的元件经