传送门

文章目录

  • 题意:
  • 思路:

题意:

思路:

首先要发现这是一个DAGDAGDAG图,让后我们可以用拓扑在图上跑期望dpdpdp。
定义f[i]f[i]f[i]表示iii到nnn的期望路径长度,知道终止状态f[n]=0f[n]=0f[n]=0,所以我们需要逆推答案f[1]f[1]f[1],那么我们就需要建反图。转移就是:f[i]=∑f[j]+w[j]deg[i]f[i]=\sum \frac{f[j]+w[j]}{deg[i]}f[i]=∑deg[i]f[j]+w[j]​
其中deg[i]deg[i]deg[i]是iii点的出度。也就是iii点的期望走∑f[j]+w[j]deg[i]\sum \frac{f[j]+w[j]}{deg[i]}∑deg[i]f[j]+w[j]​步。
直接建反图让后拓扑序跑就好啦。

//#pragma GCC optimize(2)
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<map>
#include<cmath>
#include<cctype>
#include<vector>
#include<set>
#include<queue>
#include<algorithm>
#include<sstream>
#include<ctime>
#include<cstdlib>
#define X first
#define Y second
#define L (u<<1)
#define R (u<<1|1)
#define pb push_back
#define mk make_pair
#define Mid (tr[u].l+tr[u].r>>1)
#define Len(u) (tr[u].r-tr[u].l+1)
#define random(a,b) ((a)+rand()%((b)-(a)+1))
#define db puts("---")
using namespace std;//void rd_cre() { freopen("d://dp//data.txt","w",stdout); srand(time(NULL)); }
//void rd_ac() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//AC.txt","w",stdout); }
//void rd_wa() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//WA.txt","w",stdout); }typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;const int N=1000010,M=N*2,mod=1e9+7,INF=0x3f3f3f3f;
const double eps=1e-6;int n,m;
int d[N],deg[N];
double f[N];
int e[M],ne[M],h[N],w[M],idx;void add(int a,int b,int c)
{e[idx]=b,w[idx]=c,ne[idx]=h[a],h[a]=idx++;
}int main()
{//  ios::sync_with_stdio(false);
//  cin.tie(0);scanf("%d%d",&n,&m);memset(h,-1,sizeof(h));for(int i=1;i<=m;i++){int a,b,c; scanf("%d%d%d",&a,&b,&c);add(b,a,c); d[a]++; deg[a]++;}queue<int>q;for(int i=1;i<=n;i++) if(!d[i]) q.push(i);while(q.size()){int u=q.front(); q.pop();for(int i=h[u];~i;i=ne[i]){int x=e[i];f[x]+=(f[u]+w[i])/deg[x];if(--d[x]==0) q.push(x);}}printf("%.2f\n",f[1]);return 0;
}
/**/

P4316 绿豆蛙的归宿 期望dp + DAG相关推荐

  1. BZOJ 3036 绿豆蛙的归宿 期望DP

    Time Limit: 2 Sec Memory Limit: 128 MB Submit: 610 Solved: 431 Description 随着新版百度空间的下线,Blog宠物绿豆蛙完成了它 ...

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

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

  3. AcWing 217. 绿豆蛙的归宿(期望dp)

    设F[x]为从x到终点经过的路径长度的期望值, 若从x出发到达y1, y2, y3,..., yk, 边长分别是z1, z2, z3, ..., zk, 根据数学期望的定义得出: 由于从终点的状态开始 ...

  4. 概率与期望——P4316 绿豆蛙的归宿

    概率与期望--P4316 绿豆蛙的归宿 题目 算法分析 Code 反思与总结 题目 P4316 绿豆蛙的归宿 算法分析 要计算路径的总长度期望,可以将每一个结点看作一个阶段,用dpdpdp来实现.(看 ...

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

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

  6. 【BZOJ - 3036】绿豆蛙的归宿(概率DAG图dp,拓扑排序,概率dp,期望的线性性)

    题干: 随着新版百度空间的下线,Blog宠物绿豆蛙完成了它的使命,去寻找它新的归宿. 给出一个有向无环的连通图,起点为1终点为N,每条边都有一个长度.绿豆蛙从起点出发,走向终点. 到达每一个顶点时,如 ...

  7. 洛谷P4316 绿豆蛙的归宿

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

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

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

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

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

最新文章

  1. centos7配置 console口_玩转KVM-一招打开vm的console口
  2. ASP.NET PipeLine #Reprinted#
  3. cypress测试框架与selenium_selenium自动化测试框架之PO设计模式
  4. dubbo + zookeeper 简介和部署
  5. python 找出日期_Python-在字符串中查找日期
  6. yum安装mysql my.cnf_Linxu Yum方式安装Mysql
  7. android 实现类似微信缓存和即时更新好友头像
  8. 康拓电梯卡延期与通楼修改教程
  9. bzoj2794 [Poi2012]Cloakroom ( 背包DP+离线 )
  10. coj 1256 天朝的单行道
  11. 怎样更改计算机的sid,关于Windows系统sid修改方法
  12. 9.3.2另一种计算机器2
  13. 【MidJourney】初体验——账号注册与基本操作
  14. android直接连接本地数据库文件,Android 直接连MySQL数据库
  15. 陈强教授《机器学习及R应用》课程 第九章作业
  16. 交换element-ui中$confirm弹出框的确定和取消按钮位置
  17. 【机器人关节空间与笛卡尔空间示教】
  18. 2.1.4 运算放大器的等效模型、理想运算放大器的特性
  19. AS32-TTL-100 LORA 433
  20. 微信支付重复回调,java微信支付回调问题

热门文章

  1. 85元一个万能工具箱,配齐24种螺丝刀+扳手,媲美德国工艺,家庭必备
  2. 微信新功能又来了,这些功能再次打开了我新世界的大门!
  3. 为什么大部分男生比女生高?原因让你意想不到
  4. 我背着女朋友,用 Python 偷偷抓取了她的行踪
  5. 众里寻 Bug 千百度,蓦然回首,它却在隔壁老张处……
  6. mysql 导入文件夹_MySQL-导入与导出
  7. java map 值排序_使用Java8 Stream API对Map类型按照键或值进行排序
  8. android 带弧形背景,[Android日常]绘制弧形渐变背景
  9. matlab dy,高手,请问用matlab如何解下面方程:y*Dy=a+b*y;我的计算结果里面含有wrightOmega ,怎样解出一般解?...
  10. Java JSON对象怎么遍历_Java遍历JsonObject对象