C/C++知识点之JZOJ 3388. 【NOIP2013模拟】绿豆蛙的归宿
小标 2018-08-10 来源 : 阅读 797 评论 0

摘要:本文主要向大家介绍了C/C++知识点之JZOJ 3388. 【NOIP2013模拟】绿豆蛙的归宿,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了C/C++知识点之JZOJ 3388. 【NOIP2013模拟】绿豆蛙的归宿,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。


Description
随着新版百度空间的上线,Blog宠物绿豆蛙完成了它的使命,去寻找它新的归宿。给出一个有向无环图,起点为1终点为N,每条边都有一个长度,并且从起点出发能够到达所有的点,所有的点也都能够到达终点。绿豆蛙从起点出发,走向终点。到达每一个顶点时,如果有K条离开该点的道路,绿豆蛙可以选择任意一条道路离开该点,并且走向每条路的概率为 1/K 。现在绿豆蛙想知道,从起点走到终点的所经过的路径总长度期望是多少?

 

Input
第一行: 两个整数 N M,代表图中有N个点、M条边第二行到第 1+M 行: 每行3个整数 a b c,代表从a到b有一条长度为c的有向边

Output
从起点到终点路径总长度的期望值,四舍五入保留两位小数。

 

Sample Input

4 4
1 2 1
1 3 2
2 3 3
3 4 4

Sample Output

7.00

 

Data Constraint
对于20%的数据   N<=100对于40%的数据   N<=1000对于60%的数据   N<=10000对于100%的数据  N<=100000,M<=2*N

 
做法:仔细观察可以发现,这题跟所谓的期望其实没多大关系。。用暴力算答案的复杂度为O(M), 所以搜索即可。

 1 #include 
 2 #include 
 3 #include 
 4 #define N 100007
 5 using namespace std;
 6 struct edge
 7 {
 8     int to, next;
 9     double w;
10 }e[2 * N];
11 int n, m, ls[N], tot, cd[N], rd[N];
12 double dis[N];
13 
14 void add(int x, int y, double z)
15 {
16     e[++tot].to = y;
17     e[tot].w = z;
18     e[tot].next = ls[x];
19     ls[x] = tot;
20 }
21 
22 void dfs(int x, double s, double tot)
23 {
24     if (x == n)
25     {
26         dis[n] += tot * s;
27         return;
28     }    
29     s *= (1.0 / (double)cd[x]);
30     for (int i = ls[x]; i; i = e[i].next)
31     {
32         tot += e[i].w;
33         dfs(e[i].to, s, tot);
34         tot -= e[i].w;
35     }
36 }
37 
38 int main()
39 {
40     scanf("%d%d", &n, &m);
41     int x, y;
42     double z;
43     for (int i = 1; i <= m; i++)
44     {
45         scanf("%d%d", &x, &y);
46         scanf("%lf", &z);
47         cd[x]++;
48         add(x, y, z);
49     }
50     dfs(1, 1.0, 0);
51     printf("%.2f", dis[n]);
52 }


本文由职坐标整理并发布,了解更多内容,请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程