给出一个有向无环的连通图,起点为1,终点为N,每条边都有一个长度。

数据保证从起点出发能够到达图中所有的点,图中所有的点也都能够到达终点。

绿豆蛙从起点出发,走向终点。

到达每一个顶点时,如果有K条离开该点的道路,绿豆蛙可以选择任意一条道路离开该点,并且走向每条路的概率为 1/K 。

现在绿豆蛙想知道,从起点走到终点所经过的路径总长度的期望是多少?

输入格式

第一行: 两个整数 N, M,代表图中有N个点、M条边。

第二行到第 1+M 行: 每行3个整数 a, b, c,代表从a到b有一条长度为c的有向边。

输出格式

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

数据范围

1≤N≤1051≤N≤105,
1≤M≤2N1≤M≤2N

输入样例:

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

输出样例:

7.00

题意:起点为1,终点为n,在这个有向图上求1-n的路径长度的期望,每个点的分支是K条,那么这k条走到的概率为1/k
思路:首先我们计算的时候,因为当前点的相邻边是k条,那么每条的概率为1/k,那么路径就是1/k*(当前边长),我们可以发现当前点是由前驱的概率传过来的,我们可以计算出到每个点的概率是多少
然后再去乘当前边长度,这样点与点互相传递即可,然后我们知道具体思路后,可以转化一个dp
f[x]代表当前点到终点的期望长度,然后可以推导f[x]=1/k累加(1-k)(f[y]+边长)
f[1]即为所求答案
#include<bits/stdc++.h>
#define maxn 100005
#define mod 1000000007
using namespace std;
typedef long long ll;
ll n,m;
ll d[maxn+];
ll deg[maxn+];
double f[maxn+];
vector<pair<ll,ll> > mp[maxn+];
ll x,y,z;
int main(){
cin>>n>>m;
for(int i=;i<m;i++){
cin>>x>>y>>z;
mp[y].push_back(make_pair(x,z));
d[x]++;
deg[x]++;
}
queue<ll> q;
q.push(n);
while(!q.empty()){
ll w=q.front();
q.pop();
for(int i=;i<mp[w].size();i++){
pair<ll,ll> v=mp[w][i];
f[v.first]+=(double)(f[w]+v.second)/deg[v.first];
if(--d[v.first]==){
q.push(v.first);
}
}
}
printf("%.2lf",f[]);
}
/*
4 4
1 2 1
1 3 2
2 3 3
3 4 4
*/

 

AcWing 217. 绿豆蛙的归宿 (概率期望+拓扑排序)打卡的更多相关文章

  1. P4316 绿豆蛙的归宿(期望)

    P4316 绿豆蛙的归宿 因为非要用bfs所以稍微麻烦一点qwq(大家用的都是dfs) 其实问题让我们求的就是经过每条边的概率*边权之和 我们可以用bfs把图遍历一遍处理概率,顺便把每条边的概率*边权 ...

  2. 【BZOJ3036】绿豆蛙的归宿 概率与期望

    最水的概率期望,推荐算法合集之<浅析竞赛中一类数学期望问题的解决方法> #include <iostream> #include <cstdio> using na ...

  3. 【题解】 bzoj3036: 绿豆蛙的归宿 (期望dp)

    题面戳我 Solution 反向建图跑拓扑排序,顺便处理\(dp\) 假设某条边是\(u \rightarrow v (dis)\) ,那么转移方程就是\(dp[v]+=(dp[u]+dis)/in[ ...

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

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

  5. bzoj3036: 绿豆蛙的归宿(期望DP)

    刷水反被水题日,拓扑写炸WA了2发T T... 因为是DAG图,可以直接递推,不需要高斯消元 #include<iostream> #include<cstring> #inc ...

  6. 【BZOJ3036】绿豆蛙的归宿 拓补排序+概率

    [BZOJ3036]绿豆蛙的归宿 Description 随着新版百度空间的下线,Blog宠物绿豆蛙完成了它的使命,去寻找它新的归宿. 给出一个有向无环的连通图,起点为1终点为N,每条边都有一个长度. ...

  7. BZOJ 3036: 绿豆蛙的归宿( 期望dp )

    从终点往起点倒推 . 在一个图 考虑点 u , 出度为 s : s = 0 , d[ u ] = 0 ; s ≠ 0 , 则 d( u ) = ( ∑ d( v ) ) / s ( ( u , v ) ...

  8. 【BZOJ 3036】 3036: 绿豆蛙的归宿 (概率DP)

    3036: 绿豆蛙的归宿 Time Limit: 2 Sec  Memory Limit: 128 MBSubmit: 491  Solved: 354 Description 随着新版百度空间的下线 ...

  9. 1065. [Nescafe19] 绿豆蛙的归宿(概率)

    1065. [Nescafe19] 绿豆蛙的归宿 ★   输入文件:ldfrog.in   输出文件:ldfrog.out   简单对比时间限制:1 s   内存限制:128 MB [背景] 随着新版 ...

随机推荐

  1. Vue-Router原理

    Hash 与 History 路由原理 实现路由 /** * 1.前端路由与后端路由的区别 后端路由: 输入url => 请求发送到服务器 => 服务器解析请求路径 => 拿到对应页 ...

  2. delphi 一个关于xml文件导入数据库的问题

    function LoadXml(shortPath:string;var xmlobj: IXMLDOMDocument):boolean; var tmpXml:IXMLDOMDOCUMENT; ...

  3. react教程 — 组件的生命周期 和 执行顺序

    一.组件执行的生命周期:                  参考  https://www.cnblogs.com/soyxiaobi/p/9559117.html  或  https://www.c ...

  4. [CSP-S模拟测试]:长寿花(DP+组合数)

    题目描述 庭院里有一棵古树.圣诞节到了,我想给古树做点装饰,给他一个惊喜.他会不会喜欢呢?这棵树可以分为$n$层,第$i$层有$a_i$个防治装饰品的位置,有$m$种颜色的装饰品可供选择.为了能让他喜 ...

  5. 使用mysql应该注意的细节

    一.表及字段的命名规范 1.可读性原则 使用大写和小写来格式化的库对象名字以获得良好的可读性. 例如:使用CustAdress而不是custaddress来提高可读性.(这里注意有些DBMS系统对表名 ...

  6. 命令连接redis

    cd到redis的bin目录 ./redis-cli -h 输入info,看是否要验证 清空所有key FLUSHALL

  7. [Flask] 异步非阻塞IO实现

    Flask默认是不支持非阻塞IO的,表现为: 当 请求1未完成之前,请求2是需要等待处理状态,效率非常低. 在flask中非阻塞实现可以由2种: 启用flask多线程机制 # Flask from f ...

  8. VB - FSO的常见对象和方法

    1. set fs=wscript.createobject(“scripting.filesystemobject”) 这样就建立了fso的模型.如果要释放的话也很简单, set fs=nothin ...

  9. Java并发AtomicLongArray类

    java.util.concurrent.atomic.AtomicLongArray类提供了可以原子读取和写入的底层long类型数组的操作,并且还包含高级原子操作. AtomicLongArray支 ...

  10. Win10自动更新关闭

    1.在win7和win8的系统中我们可以很轻松的通过控制面板的中的Windows Update中找到关闭自动更新的选项, 但是在win10中我们是找不到的.如下图: 2.在win10中的设置里面我们也 ...