设F[x]为从x到终点经过的路径长度的期望值, 若从x出发到达y1, y2, y3,..., yk, 边长分别是z1, z2, z3, ..., zk, 根据数学期望的定义得出:

由于从终点的状态开始递推比较容易, 因为F[n] = 0,所以我们从终点开始递推,最终我们要求出F[1]的状态.对于有向无环图来说,要倒序递推,我们可以建立反图,然后一边拓扑排序,一边更新状态.

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int n, m;
int h[N * 2], e[N * 2], ne[N * 2], val[N * 2], idx = 1;
int deg[N], out[N];
double f[N];void add(int a, int b, int c){val[idx] = c, e[idx] = b, ne[idx] = h[a], h[a] = idx++;
}
void bfs(){queue<int> q;q.emplace(n);while (q.size()){int x = q.front();q.pop();for (int i = h[x]; i; i = ne[i]){int y = e[i], z = val[i];f[y] += (f[x] + z) / deg[y];if (--out[y] == 0)q.emplace(y);}}
}
signed main(){cin >> n >> m;for (int i = 1; i <= m; ++i){int x, y, z;cin >> x >> y >> z;add(y, x, z);++deg[x], ++out[x];}bfs();printf("%.2f\n", f[1]);
}

总结:

1.求一个边有出度,可以转化为入度来求

2.对于一个有向无环图来说,要反向遍历(即从终点开始遍历到起点)这个图,我们可以建立反图,然后从终点开始拓扑排序,一边排序一边解决问题.

AcWing 217. 绿豆蛙的归宿(期望dp)相关推荐

  1. Acwing 217. 绿豆蛙的归宿

    Acwing 217. 绿豆蛙的归宿 题意: 给出一个有向无环的连通图,起点为 1,终点为 N,每条边都有一个长度. 数据保证从起点出发能够到达图中所有的点,图中所有的点也都能够到达终点. 绿豆蛙从起 ...

  2. BZOJ 3036 绿豆蛙的归宿 期望DP

    Time Limit: 2 Sec Memory Limit: 128 MB Submit: 610 Solved: 431 Description 随着新版百度空间的下线,Blog宠物绿豆蛙完成了它 ...

  3. acwing 217.绿豆蛙的归宿

    给出一个有向无环的连通图,起点为 1,终点为 N,每条边都有一个长度. 数据保证从起点出发能够到达图中所有的点,图中所有的点也都能够到达终点. 绿豆蛙从起点出发,走向终点. 到达每一个顶点时,如果有  ...

  4. AcWing 217 绿豆蛙的归宿(概率与期望)

    思路:题目给出每个点如果有k条离开点的边,都会等概率的离开.那么每个点的期望就是离开(每个点的长度+下一个点的期望)乘1/k的和.显然我们一开始的思路应该是顺着往后推,但是后面的点的期望是没办法很好的 ...

  5. P4316 绿豆蛙的归宿 期望dp + DAG

    传送门 文章目录 题意: 思路: 题意: 思路: 首先要发现这是一个DAGDAGDAG图,让后我们可以用拓扑在图上跑期望dpdpdp. 定义f[i]f[i]f[i]表示iii到nnn的期望路径长度,知 ...

  6. bzoj 3036: 绿豆蛙的归宿(Dp)

    3036: 绿豆蛙的归宿 Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 724  Solved: 511 [Submit][Status][Discu ...

  7. 217 绿豆蛙的归宿(数学期望)

    1.问题描述: 给出一个有向无环的连通图,起点为 1,终点为 N,每条边都有一个长度.数据保证从起点出发能够到达图中所有的点,图中所有的点也都能够到达终点.绿豆蛙从起点出发,走向终点.到达每一个顶点时 ...

  8. 洛谷P4316 绿豆蛙的归宿(期望)

    题意翻译 「Poetize3」 题目背景 随着新版百度空间的上线,Blog宠物绿豆蛙完成了它的使命,去寻找它新的归宿. 题目描述 给出一个有向无环图,起点为1终点为N,每条边都有一个长度,并且从起点出 ...

  9. 【BZOJ3036】绿豆蛙的归宿 概率DP

    链接: #include <stdio.h> int main() {puts("转载请注明出处[辗转山河弋流歌 by 空灰冰魂]谢谢");puts("网址: ...

最新文章

  1. SSH方式连接Git服务器需要注意的地方
  2. MySQL性能优化的最佳20+条经验(转)
  3. 使用 C# 开发智能手机软件:推箱子(二十三)
  4. Java的Runtime类介绍
  5. 深入浅出CSS(二):关于雪碧图、background-position与steps函数的三角恋情
  6. delete 和 delete [] 的真正区别
  7. 大牛书单 | 搜索大牛都读什么书?
  8. 九章算法强化班 - 课程大纲
  9. Python测试开发django3.视图和URL配置
  10. 4.3 深层网络中的前向传播
  11. mongodb示例_MongoDB findAndModify()示例
  12. 用U盘安装Windows系统操作步骤
  13. iOS手机模拟器配置
  14. python数据笔记分析_python数据分析入门学习笔记
  15. PlayStation Now比您想象的要好
  16. 笔记本F1音量键常亮,电脑没声音?这里有妙招。
  17. MySQL学生成绩表查询最大、最小、平均、80分以上、人数、
  18. LiveUpdate Adminstrator配置手册
  19. 免费刷题!初级软件测试面试题目和答案这个小程序很全
  20. 【并查集】【模拟】家谱

热门文章

  1. Manifest merger failed with multiple errors
  2. 宿迁高考成绩查询2021,2021宿迁市地区高考成绩排名查询,宿迁市高考各高中成绩喜报榜单...
  3. Direct3D 12 尝鲜(二): Fence
  4. 视频教程-系统集成项目管理工程师考试-项目管理部分大全-软考
  5. html无序列表透明圆点,html无序列表的类型type
  6. 叶子结点和分支节点_什么是叶子节点,度?根节点?
  7. stremlit学习前骤
  8. 比尔盖茨给青年人的十个忠告
  9. 计算机部分应用显示模糊,电脑显示器局部模糊怎么办
  10. 网技·实验·3.29