3036: 绿豆蛙的归宿 - BZOJ

2023-12-12 12:20
文章标签 bzoj 归宿 绿豆蛙 3036

本文主要是介绍3036: 绿豆蛙的归宿 - BZOJ,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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
HINT

 

对于100%的数据 N<=100000,M<=2*N

 

拓扑排序然后算期望长度

 1 const
 2     maxn=100100;
 3     maxm=maxn*2;
 4 var
 5     first,d,c:array[0..maxn]of longint;
 6     f,dis:array[0..maxn]of double;
 7     next,last,len:array[0..maxm]of longint;
 8     n,m,tot:longint;
 9 
10 procedure insert(x,y,z:longint);
11 begin
12     inc(tot);
13     last[tot]:=y;
14     next[tot]:=first[x];
15     first[x]:=tot;
16     len[tot]:=z;
17     inc(d[y]);
18     inc(c[x]);
19 end;
20 
21 procedure init;
22 var
23     i,x,y,z:longint;
24 begin
25     read(n,m);
26     for i:=1 to m do
27       begin
28         read(x,y,z);
29         insert(x,y,z);
30       end;
31 end;
32 
33 var
34     q:array[0..maxn]of longint;
35     l,r:longint;
36 
37 procedure work;
38 var
39     i:longint;
40 begin
41     l:=1;
42     r:=1;
43     q[1]:=1;
44     f[1]:=1;
45     while l<=r do
46       begin
47         i:=first[q[l]];
48         while i<>0 do
49           begin
50             f[last[i]]:=f[last[i]]+f[q[l]]/c[q[l]];
51             dis[last[i]]:=dis[last[i]]+dis[q[l]]/c[q[l]]+len[i]*f[q[l]]/c[q[l]];
52             dec(d[last[i]]);
53             if d[last[i]]=0 then
54             begin
55               inc(r);
56               q[r]:=last[i];
57             end;
58             i:=next[i];
59           end;
60         inc(l);
61       end;
62     writeln(dis[n]:0:2);
63 end;
64 
65 begin
66     init;
67     work;
68 end.
View Code

 

转载于:https://www.cnblogs.com/Randolph87/p/3746355.html

这篇关于3036: 绿豆蛙的归宿 - BZOJ的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/484635

相关文章

【BZOJ】1324 Exca王者之剑 最大权独立集

传送门:【BZOJ】1324  Exca王者之剑 题目分析:赤裸裸的最大权独立集。。。最小割解决 代码如下: #include <cstdio>#include <vector>#include <cstring>#include <algorithm>using namespace std ;#define REP( i , a , b ) for ( int

【BZOJ】1026: [SCOI2009]windy数 数位DP

传送门:【BZOJ】1026: [SCOI2009]windy数 题目分析:数位DP水题。 代码如下: #include <stdio.h>#include <cstring>#include <algorithm>#define rep( i , a , b ) for ( int i = a ; i < b ; ++ i )#define For( i ,

【BZOJ】2152: 聪聪可可 点分治

传送门:【BZOJ】2152: 聪聪可可 题目分析:记录权值和%3的路径的个数。。。然后去重。。没了。。 代码如下: #include <vector>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std ;typedef lo

BZOJ 2440 2301 莫比乌斯应用

http://www.lydsy.com/JudgeOnline/problem.php?id=2440 Description 小 X 自幼就很喜欢数。但奇怪的是,他十分讨厌完全平方数。他觉得这些 数看起来很令人难受。由此,他也讨厌所有是完全平方数的正整数倍的数。然而 这丝毫不影响他对其他数的热爱。  这天是小X的生日,小 W 想送一个数给他作为生日礼物。当然他不能送一 个小X讨厌

BZOJ 3732: Network(最小生成树+倍增)

题目链接 题意:给出一个图,每个询问的格式是:A B,表示询问从A点走到B点的所有路径中,最长的边最小值是多少 很明显最终查询的边一定是在最小生成树里面的,先跑出最小生成树,然后,可以树链剖分,也可以使用倍增来计算 #include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define

BZOJ 2038 小Z的袜子(hose) (莫队离线)

题目地址:BZOJ 2038 裸的莫队算法。 代码如下: #include <iostream>#include <string.h>#include <math.h>#include <queue>#include <algorithm>#include <stdlib.h>#include <map>#include <set>#include <stdio.h>#in

BZOJ 2152 聪聪可可 (树上点分治)

题目地址:BZOJ 2152 找有多少对权值和为3的倍数的点。最简单的点分治。 代码如下: #include <iostream>#include <string.h>#include <math.h>#include <queue>#include <algorithm>#include <stdlib.h>#include <map>#include <set>#incl

BZOJ 3530 数数【AC自动机+数位dp】

[Sdoi2014]数数 简单数位dp+简单AC自动机 反正数位DP是队友写的 AC自动机要记录两个值,一个是是否为一个串的结束,即不合法状态,一个是前缀零的情况。 // whn6325689// Mr.Phoebe// http://blog.csdn.net/u013007900#include <algorithm>#include <iostr

BZOJ 3531 旅行【树链剖分】

[Sdoi2014] 简单的树链剖分 以每个信仰应该建一个线段树,空间复杂度为 O(5×1010) O(5\times 10^{10}) 因此会爆空间,所以需要动态申请空间。 // whn6325689// Mr.Phoebe// http://blog.csdn.net/u013007900#include <algorithm>#include <

BZOJ 3262(树套树)

【bzoj3262】陌上花开 Description 有n朵花,每朵花有三个属性:花形(s)、颜色(c)、气味(m),又三个整数表示。现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量。定义一朵花A比另一朵花B要美丽,当且仅当Sa>=Sb,Ca>=Cb,Ma>=Mb。显然,两朵花可能有同样的属性。需要统计出评出每个等级的花的数量。 Input 第一行为N,K (1