[Luogu 4316] 绿豆蛙的归宿
一道基础的 \(DAG\) 上期望 \(DP\)。
给出一个有向无环图,起点为 \(1\) 终点为 \(N\),每条边都有一个长度,并且从起点出发能够到达所有的点,所有的点也都能够到达终点。到达每一个顶点时,如果有 \(K\) 条离开该点的道路,绿豆蛙可以选择任意一条道路离开该点,并且走向每条路的概率为 \(\frac{1}{K}\) 。求从起点走到终点的所经过的路径总长度期望是多少。
一开始使经过起点的概率为 \(1\),到起点的期望距离为 \(0\),拓扑推下去,\(GG\)。\(WA\) 了两发,怎么也搞不出来……
其实这道题的期望怎么算是很显然的,可以发现,\(Ans = \sum_{e \in Edge} t_e w_e\),\(t_e\) 为经过一条边的期望次数,即经过这条边起点的期望次数除以这条边起点的出度。
然后可以设状态 \(ex[x]\) 表示点 \(x\) 到终点 \(n\) 的期望路径总长。显然,要求的答案为\(ex[1]\),而且有\(ex[n]=0\)。进行一遍拓扑排序,在拓扑排序的时候进行期望 \(dp\) 的转移。而对于一条有向边,我们假设它由 \(x−>y\),那么有 \(ex[x]=(\frac{1}{degree[x]})∗\sum (ex[y] + w[x−>y])\)。题目就解出来了……
总结一下的话……期望 \(DP\) 也是一种 \(DP\),所以 \(DP\) 的相关内容都是有的。一般来说,初始状态确定时可用顺推,终止状态确定时可用逆推,而期望大多是逆推的。
代码:
#include <cmath>
#include <queue>
#include <cstdio>
#include <cctype>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 100000 + 10;
double ex[maxn];
int n, m, head[maxn], in_deg[maxn], out_deg[maxn], sta[maxn], top, edge_num;
struct Edge { int v, w, nxt; } edge[maxn << 1];
inline void Add_edge(int u, int v, int w) {
edge[++edge_num].v = v, edge[edge_num].w = w, ++out_deg[u], ++in_deg[v];
edge[edge_num].nxt = head[u], head[u] = edge_num;
}
inline void Breath_fs(int s) {
queue<int> q; q.push(s);
while( !q.empty() ) {
sta[++top] = q.front(), q.pop();
for(int i = head[sta[top]]; i; i = edge[i].nxt)
if( --in_deg[edge[i].v] == 0 ) q.push(edge[i].v);
}
}
int main(int argc, char const *argv[])
{
scanf("%d%d", &n, &m);
for(int u, v, w, i = 1; i <= m; ++i)
scanf("%d%d%d", &u, &v, &w), Add_edge(u, v, w);
Breath_fs(1);
for(int t = n; t > 0; --t)
for(int x = sta[t], i = head[x]; i; i = edge[i].nxt)
ex[x] = ex[x] + (ex[edge[i].v] + edge[i].w) / out_deg[x];
printf("%.2lf\n", ex[1]);
return 0;
}
花影婆娑欲踏踩,悬崖樱树月色明。
[Luogu 4316] 绿豆蛙的归宿的更多相关文章
- Luogu P4316 绿豆蛙的归宿
P4316 绿豆蛙的归宿 题意翻译 「Poetize3」 题目背景 随着新版百度空间的上线,Blog宠物绿豆蛙完成了它的使命,去寻找它新的归宿. 题目描述 给出一个有向无环图,起点为1终点为N,每条边 ...
- [luogu]P4316 绿豆蛙的归宿(拓扑排序,期望)
P4316 绿豆蛙的归宿 题目背景 随着新版百度空间的上线,Blog宠物绿豆蛙完成了它的使命,去寻找它新的归宿. 题目描述 给出一个有向无环图,起点为1终点为N,每条边都有一个长度,并且从起点出发能够 ...
- 洛谷4316 绿豆蛙的归宿(DAG递推/概率dp)
题目大意: 给定一个DAG,求起点到终点的路径长度期望 根据题意可以知道每一条边都有一定概率被走到 那么\(\displaystyle\begin{aligned} Ans = \sum_{e \in ...
- 【BZOJ3036】绿豆蛙的归宿 拓补排序+概率
[BZOJ3036]绿豆蛙的归宿 Description 随着新版百度空间的下线,Blog宠物绿豆蛙完成了它的使命,去寻找它新的归宿. 给出一个有向无环的连通图,起点为1终点为N,每条边都有一个长度. ...
- BZOJ3036: 绿豆蛙的归宿&Wikioi2488:绿豆蛙的归宿
3036: 绿豆蛙的归宿 Time Limit: 2 Sec Memory Limit: 128 MBSubmit: 108 Solved: 73[Submit][Status] Descript ...
- BZOJ 3036: 绿豆蛙的归宿( 期望dp )
从终点往起点倒推 . 在一个图 考虑点 u , 出度为 s : s = 0 , d[ u ] = 0 ; s ≠ 0 , 则 d( u ) = ( ∑ d( v ) ) / s ( ( u , v ) ...
- BZOJ3036绿豆蛙的归宿
BZOJ3036绿豆蛙的归宿 锲下陟凝 褰宓万 郝瓦痕膳 叶诙摞 А知π剧 椐猊∫距 屠缲佗 ゲ蕖揪 俜欧彖鹤 磲砩ほ #琛扶 觅电闸ス 捆鳢げ 浜窠 魂睨"烁 蕞滗浼 洒ヂ跪 ...
- [COGS 1065] 绿豆蛙的归宿
先贴题面w 1065. [Nescafe19] 绿豆蛙的归宿 ★ 输入文件:ldfrog.in 输出文件:ldfrog.out 简单对比时间限制:1 s 内存限制:128 MB 随着新 ...
- P4316 绿豆蛙的归宿(期望)
P4316 绿豆蛙的归宿 因为非要用bfs所以稍微麻烦一点qwq(大家用的都是dfs) 其实问题让我们求的就是经过每条边的概率*边权之和 我们可以用bfs把图遍历一遍处理概率,顺便把每条边的概率*边权 ...
随机推荐
- 三、Snapman多人协作电子表格之——软件的基本功能
Snapman多人协作电子表格是一个即时工作系统. 一.SnapmanServer服务端 SnapmanServer服务端在安装Snapman软件一起自带,是一个小巧的控制台程序SnapmanServ ...
- weblogic 安全漏洞 CVE-2017-5638
关于安全漏洞 CVE-2017-5638 的 Weblogic Server 防护建议 关于Weblogic Server如何防护防止近期爆出的Struts 2远程代码执行安全漏洞,为您提供以下内容参 ...
- SuperMap iServer 在Linux 部署中问题总结
SuperMap iServer 作为超图公司的云GIS服务器产品,一般是部署在Linux服务器上.下面把日常部署和使用过程中遇到的相关问题做以汇总. 1.部署iServer的第一步是要检查Linux ...
- java集合介绍(List,Set,Map)
前言 介绍java的常用集合+各个集合使用用例 欢迎转载,请注明作者和出处哦☺ 参考: 1,<Java核心编程技术(第二版)> 2, http://www.cnblogs.com/Litt ...
- C# 获取当前服务器域名
"http://"是协议名 "www.test.com"是域名 "aaa"是站点名 "bbb.aspx"是页面名(文件名 ...
- 公钥密码RSA算法记录
介绍: RSA算法是1978年由 R.Rivest.A.Shamir.L.Adleman提出的一种用数论构造的.也是迄今为止理论上最为成熟.完善的公钥密码体,该体制已得到广泛的应用. 算法描述: 1. ...
- 24G的SSD有什么用
有台12G内存,带24G的SSD的笔记本,系统自带WINDOWS8,最近感觉很慢,就动手把1T的硬盘升级到512的SSD. BIOS里面明明看到24G的SSD,Windows里面就消失了(应该是坏掉了 ...
- javaEmail发邮件是问号乱码,已解决
寒假学习了ssm,就把之前看过的一个商城项目用ssm重构了. 然后在本地一切都正常,放到个人服务器上就凉了. 因为这个项目注册需要邮箱激活,然后就在发邮件的时候出了问题. 一.发送端口 因为源程序是用 ...
- C++一些基本数据结构:字面常量、符号常量、枚举常量
常量:C++包括两种常量,字面常量和符号常量. 字面常量:指的是直接输入到程序中的值 比如:in myAge=26: myAge是一个int类型变量,而26是一个字面常量. 符号常量:指的是用名称表示 ...
- 江苏省选2019Round2游记
JSOI2019R2过去了. 翻盘变翻车... Day 0 打板子.写了几棵主席树. 然后啃CF 331D3.啃不动 Day 1 开T1.这什么玩意啊...换换换 开T2.一眼\(10\)分的状压,码 ...