概率与期望——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 绿豆蛙的归宿相关推荐

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

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

  2. 洛谷P4316 绿豆蛙的归宿

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

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

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

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

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

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

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

  6. Acwing 217. 绿豆蛙的归宿

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

  7. [cogs1065]绿豆蛙的归宿

    1065. [Nescafe19] 绿豆蛙的归宿 [题目描述] 给出一个有向无环的连通图,起点为1终点为N,每条边都有一个长度.绿豆蛙从起点出发,走向终点. 到达每一个顶点时,如果有K条离开该点的道路 ...

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

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

  9. 【题解】绿豆蛙的归宿

    绿豆蛙的归宿 [题目描述] 给出一个有向无环的连通图,起点为 111 终点为 NNN ,每条边都有一个长度.绿豆蛙从起点出发,走向终点.数据保证从起点出发能够达到图中所有点,图中所有点都能够到底终点. ...

最新文章

  1. 多商家分销商城系统如何开发?
  2. 面试题----寻找比一个N位数大的“下”一个数
  3. 什么是Servlet?
  4. docker 部署_Nginx K8s + Docker 部署 ,虚拟机部署教程。
  5. 去超市一定要存包吗_去东京一定要去的富士河口湖
  6. QT 显示中文、解决发布乱码、获得系统特定目录、获取文件属性、列表控件、屏幕截图显示保存(定时器)、视频直播、右键菜单
  7. [翻译]Writing Custom Wizards 编写自定义的向导
  8. 201521123014 《Java程序设计》第7周学习总结
  9. GISAXS和GIWAXS的分析
  10. php是什么电器元件,常见电子元件识别
  11. python绘制单线图_教你快速利用CAD绘制管道单线图.pdf
  12. U盘插入电脑说要格式化,但电脑又说“磁盘被写保护,无法格式化”,如何解决
  13. NLP分词使用总结--python HANLP
  14. 广告学概论--名词解释
  15. python根据日期算星期几_python根据日期返回星期几的方法
  16. 应用宝上线应用后一直处于审核状态问题解决
  17. python如何计算字典平均值_算出字典中数值的平均值
  18. 嵌入式工程师月薪最高排行榜
  19. 对于家政020 APP平台如何走出资本寒冬?
  20. 利用IPV6免费登QQ和打电话

热门文章

  1. 密码学归约证明——定长对称加密密钥的敌手不可区分性
  2. 再添新认证!云和恩墨 zCloud 与华为 FusionCube 完成兼容性测试
  3. 临时链接转为永久链接的三种方法
  4. C++设计模式——组合模式(高屋建瓴)
  5. flex布局实现叠在另一个div之上_flex布局
  6. 4h上手C++版Opencv
  7. 网技·理论 3.22
  8. 13.Excel vba开发-合并单元格内容
  9. c++ union学习
  10. 深入浅出Java clone技术