【bzoj3036】绿豆蛙的归宿
来源:互联网 发布:淘宝双11海报素材 编辑:程序博客网 时间:2024/06/10 09:46
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
题解
f[i]表示i到终点期望走几步。
f[i]=sigma(f[j]+len)/du[i]
代码
#include<bits/stdc++.h>#define mod 1000003#define inf 10000000typedef long long ll;using namespace std;inline int read(){ int x=0,f=1;char ch=getchar(); while (ch<'0'||ch>'9'){if (ch=='-')f=-1;ch=getchar();} while (ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}double f[100005];int Next[200005],ret[200005],Head[100005],len[200005];int n,m,tot,du[100005];bool vis[100005];inline void ins(int u,int v,int l){ ret[++tot]=v;len[tot]=l; Next[tot]=Head[u];Head[u]=tot;} void dfs(int u){ if (vis[u]) return; vis[u]=1; for (int i=Head[u];i;i=Next[i]) { dfs(ret[i]); f[u]+=f[ret[i]]+len[i]; } if (du[u]) f[u]/=du[u];}int main(){ n=read();m=read(); for (int i=1;i<=m;i++) { int u=read(),v=read(),l=read(); ins(u,v,l); du[u]++; } dfs(1); printf("%.2lf",f[1]); return 0;}
阅读全文
0 0
- 【bzoj3036】绿豆蛙的归宿
- bzoj3036 绿豆蛙的归宿
- bzoj3036 绿豆蛙的归宿
- BZOJ3036 绿豆蛙的归宿
- 【bzoj3036】绿豆蛙的归宿
- BZOJ3036 绿豆蛙的归宿
- 【BZOJ3036】绿豆蛙的归宿 概率DP
- [bzoj3036]绿豆蛙的归宿 期望DP
- 【bzoj3036】绿豆蛙的归宿 期望dp
- [BZOJ3036]绿豆蛙的归宿 ——期望DP
- [BZOJ3036]绿豆蛙的归宿(拓扑序+期望dp)
- BZOJ3036-绿豆蛙的归宿-概率与期望-DP
- BZOJ3036[绿豆蛙的归宿] 期望概率DP
- [BZOJ3036][codevs2488]绿豆蛙的归宿(期望dp)
- 绿豆蛙的归宿
- 绿豆蛙的归宿
- 3036: 绿豆蛙的归宿
- Codevs2488绿豆蛙的归宿
- dom4j对XML的读写
- 1481. 偷懒的西西
- window.opener方法的使用 js跨域
- MAC上编写汇编程序
- 大学生职业规划
- 【bzoj3036】绿豆蛙的归宿
- ajax原理过程 同步与异步区别 优缺点
- leetcode Kth Largest Element in an Array
- 设计模式-行为-命令
- POJ 3281 Dining 笔记
- const int * 与 int * const等的区别
- Java程序员从笨鸟到菜鸟之(三)类与对象
- linux设备驱动模板
- Hibernate各种主键生成策略与配置详解