AcWing 217. 绿豆蛙的归宿 (概率期望+拓扑排序)打卡
给出一个有向无环的连通图,起点为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. 绿豆蛙的归宿 (概率期望+拓扑排序)打卡的更多相关文章
- P4316 绿豆蛙的归宿(期望)
P4316 绿豆蛙的归宿 因为非要用bfs所以稍微麻烦一点qwq(大家用的都是dfs) 其实问题让我们求的就是经过每条边的概率*边权之和 我们可以用bfs把图遍历一遍处理概率,顺便把每条边的概率*边权 ...
- 【BZOJ3036】绿豆蛙的归宿 概率与期望
最水的概率期望,推荐算法合集之<浅析竞赛中一类数学期望问题的解决方法> #include <iostream> #include <cstdio> using na ...
- 【题解】 bzoj3036: 绿豆蛙的归宿 (期望dp)
题面戳我 Solution 反向建图跑拓扑排序,顺便处理\(dp\) 假设某条边是\(u \rightarrow v (dis)\) ,那么转移方程就是\(dp[v]+=(dp[u]+dis)/in[ ...
- 【BZOJ3036】绿豆蛙的归宿 概率DP
链接: #include <stdio.h> int main() { puts("转载请注明出处[辗转山河弋流歌 by 空灰冰魂]谢谢"); puts("网 ...
- bzoj3036: 绿豆蛙的归宿(期望DP)
刷水反被水题日,拓扑写炸WA了2发T T... 因为是DAG图,可以直接递推,不需要高斯消元 #include<iostream> #include<cstring> #inc ...
- 【BZOJ3036】绿豆蛙的归宿 拓补排序+概率
[BZOJ3036]绿豆蛙的归宿 Description 随着新版百度空间的下线,Blog宠物绿豆蛙完成了它的使命,去寻找它新的归宿. 给出一个有向无环的连通图,起点为1终点为N,每条边都有一个长度. ...
- BZOJ 3036: 绿豆蛙的归宿( 期望dp )
从终点往起点倒推 . 在一个图 考虑点 u , 出度为 s : s = 0 , d[ u ] = 0 ; s ≠ 0 , 则 d( u ) = ( ∑ d( v ) ) / s ( ( u , v ) ...
- 【BZOJ 3036】 3036: 绿豆蛙的归宿 (概率DP)
3036: 绿豆蛙的归宿 Time Limit: 2 Sec Memory Limit: 128 MBSubmit: 491 Solved: 354 Description 随着新版百度空间的下线 ...
- 1065. [Nescafe19] 绿豆蛙的归宿(概率)
1065. [Nescafe19] 绿豆蛙的归宿 ★ 输入文件:ldfrog.in 输出文件:ldfrog.out 简单对比时间限制:1 s 内存限制:128 MB [背景] 随着新版 ...
随机推荐
- 【LeetCode 90】子集 II
题目链接 [题解] 我们在枚举下一个要取哪个数字的时候. 如 1112233 for (int i = start;i<=n;i++) //其中start-1是上一次取的位置. 如果i>s ...
- 树结构遍历节点名字提取,这里提取的是el-tree数据结构,封装成函数
/** * 树形数据提取节点 * @param {*} data */ export function treeDataGetnode (data) { var res = [] var child= ...
- C++中若类中没有默认构造函数,如何使用对象数组
前言: 如果定义一个类,有其默认的构造函数,则使用new动态实例化一个对象数组,不是件难事,如下代码: #include <memory> #include <iostream> ...
- 【Jmeter基础】 Linux上运行Jmeter
Jmeter 是一个强大的并发压测工具,常用于性能测试,压力测试,接口测试等领域.本文将介绍如下内容: 1. Jmeter 执行阶梯式压测 2. Jmeter 如何压测网站的js,css 等资源 3. ...
- Openstack API 类型 & REST 风格
目录 目录 Openstack 提供了三种操作方式 Web界面 CIL 指令行 RESTful API REST 风格 RESTFul风格的API设计 基于HTTP协议的RESTful API Ope ...
- java String 类特点
String的设计是一个典型的单一模式 String str1="AAAA":String str2="AAAA": 这生成两个对象吗?不是.在内存中,这是同一 ...
- 抓包工具charles下载安装(MAC版)
什么是charles? charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据.它允许一 ...
- Linux操作系统(四)_部署MySQL
一.部署过程 1.当前服务器的内核版本和发行版本 cat /etc/issue uname -a 2.检查系统有没有自带mysql,并卸载自带版本 yum list installed | grep ...
- 1.如何在JMeter中使用JUnit
您是否需要在测试过程中使用JUnit? 要回答这个问题,我们先来看看单元测试. 单元测试是软件测试生命周期中测试的最低分辨率. 运行单元测试时,需要在应用程序中使用最小的可测试功能,将其与其他代码隔离 ...
- fiddler如何抓取https接口
1.Fiddler工作原理: Fiddler 是以代理 web 服务器的形式工作的,它使用代理地址:127.0.0.1端口:8888. 当 Fiddler 退出的时候它会自动注销,这样就不会影响 ...