概率与期望——P4316 绿豆蛙的归宿
概率与期望——P4316 绿豆蛙的归宿
- 题目
- 算法分析
- Code
- 反思与总结
题目
P4316 绿豆蛙的归宿
算法分析
要计算路径的总长度期望,可以将每一个结点看作一个阶段,用dpdpdp来实现。(看别的dalaodalaodalao说这叫 期望dp(概率dp) ,咱也不知道咱也不敢说)
我们回到这道题,题中对于图中的一条边,假设 u−>vu->vu−>v,对于期望值f[u]f[u]f[u]则有f[u]=1k∗∑(f[v])+wf[u]=\dfrac{1}{k}*\sum (f[v] )+w f[u]=k1∗∑(f[v])+w
这就是dpdpdp转移方程啦,其中 kkk 可用 uuu 点的度 degree[u]degree[u]degree[u] 来表示。目标是f[1]f[1]f[1],其中边界f[n]=0f[n]=0f[n]=0(终点的期望值为0)。
在实现过程中我们可以逆着进行dpdpdp,所以建图时要反向建图,然后进行拓扑排序。(需要复习拓扑排序的小伙伴戳这里 → 数据结构与算法—拓扑排序)
具体代码如下:
Code
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<queue>
#define rg register
using namespace std;
typedef long long int lint;
inline int sread()
{int x=0,f=1;char c=getchar();while(c>'9'||c<'0') {if(c=='-') f=-1;c=getchar();}while(c>='0'&&c<='9') {x=x*10+c-'0';c=getchar();} return f*x;
}
int n,m,cnt;
int h[10000000];
int degree[1000000],ingree[1000000];
double f[1000000];
struct node{int next;int to;int val;
}edg[10000000];
void add(int u,int v,int val)
{++cnt;edg[cnt].next=h[u];edg[cnt].to=v;edg[cnt].val=val;h[u]=cnt;
}inline int tosort()//拓扑排序
{queue <int> q1;q1.push(n);while(q1.size()!=0){int u=q1.front();q1.pop();for(rg int i=h[u];i;i=edg[i].next){int v=edg[i].to;f[v]+=(f[u]+edg[i].val)/degree[v];//dp转移方程 --ingree[v];if(!ingree[v]) q1.push(v);}}
}int main()
{n=sread();m=sread();int u,v,w;for(rg int i=1;i<=m;++i){u=sread(); v=sread(); w=sread();add(v,u,w);//反向建图 ++degree[u]; ++ingree[u];}tosort();printf("%.2lf",f[1]);return 0;
}
反思与总结
1.概率与期望题常与 dpdpdp 相关,并经常需要"反着来"。
概率与期望——P4316 绿豆蛙的归宿相关推荐
- 洛谷P4316 绿豆蛙的归宿(期望)
题意翻译 「Poetize3」 题目背景 随着新版百度空间的上线,Blog宠物绿豆蛙完成了它的使命,去寻找它新的归宿. 题目描述 给出一个有向无环图,起点为1终点为N,每条边都有一个长度,并且从起点出 ...
- 洛谷P4316 绿豆蛙的归宿
题目背景 随着新版百度空间的上线,Blog 宠物绿豆蛙完成了它的使命,去寻找它新的归宿. 题目描述 给出张 nn 个点 mm 条边的有向无环图,起点为 11,终点为 nn,每条边都有一个长度,并且从起 ...
- P4316 绿豆蛙的归宿 期望dp + DAG
传送门 文章目录 题意: 思路: 题意: 思路: 首先要发现这是一个DAGDAGDAG图,让后我们可以用拓扑在图上跑期望dpdpdp. 定义f[i]f[i]f[i]表示iii到nnn的期望路径长度,知 ...
- 【BZOJ 3036】 3036: 绿豆蛙的归宿 (概率DP)
3036: 绿豆蛙的归宿 Time Limit: 2 Sec Memory Limit: 128 MB Submit: 491 Solved: 354 Description 随着新版百度空间的下 ...
- 【BZOJ3036】绿豆蛙的归宿 拓补排序+概率
[BZOJ3036]绿豆蛙的归宿 Description 随着新版百度空间的下线,Blog宠物绿豆蛙完成了它的使命,去寻找它新的归宿. 给出一个有向无环的连通图,起点为1终点为N,每条边都有一个长度. ...
- Acwing 217. 绿豆蛙的归宿
Acwing 217. 绿豆蛙的归宿 题意: 给出一个有向无环的连通图,起点为 1,终点为 N,每条边都有一个长度. 数据保证从起点出发能够到达图中所有的点,图中所有的点也都能够到达终点. 绿豆蛙从起 ...
- [cogs1065]绿豆蛙的归宿
1065. [Nescafe19] 绿豆蛙的归宿 [题目描述] 给出一个有向无环的连通图,起点为1终点为N,每条边都有一个长度.绿豆蛙从起点出发,走向终点. 到达每一个顶点时,如果有K条离开该点的道路 ...
- bzoj 3036: 绿豆蛙的归宿(Dp)
3036: 绿豆蛙的归宿 Time Limit: 2 Sec Memory Limit: 128 MB Submit: 724 Solved: 511 [Submit][Status][Discu ...
- 【题解】绿豆蛙的归宿
绿豆蛙的归宿 [题目描述] 给出一个有向无环的连通图,起点为 111 终点为 NNN ,每条边都有一个长度.绿豆蛙从起点出发,走向终点.数据保证从起点出发能够达到图中所有点,图中所有点都能够到底终点. ...
最新文章
- 多商家分销商城系统如何开发?
- 面试题----寻找比一个N位数大的“下”一个数
- 什么是Servlet?
- docker 部署_Nginx K8s + Docker 部署 ,虚拟机部署教程。
- 去超市一定要存包吗_去东京一定要去的富士河口湖
- QT 显示中文、解决发布乱码、获得系统特定目录、获取文件属性、列表控件、屏幕截图显示保存(定时器)、视频直播、右键菜单
- [翻译]Writing Custom Wizards 编写自定义的向导
- 201521123014 《Java程序设计》第7周学习总结
- GISAXS和GIWAXS的分析
- php是什么电器元件,常见电子元件识别
- python绘制单线图_教你快速利用CAD绘制管道单线图.pdf
- U盘插入电脑说要格式化,但电脑又说“磁盘被写保护,无法格式化”,如何解决
- NLP分词使用总结--python HANLP
- 广告学概论--名词解释
- python根据日期算星期几_python根据日期返回星期几的方法
- 应用宝上线应用后一直处于审核状态问题解决
- python如何计算字典平均值_算出字典中数值的平均值
- 嵌入式工程师月薪最高排行榜
- 对于家政020 APP平台如何走出资本寒冬?
- 利用IPV6免费登QQ和打电话