P4316 绿豆蛙的归宿 期望dp + DAG
传送门
文章目录
- 题意:
- 思路:
题意:
思路:
首先要发现这是一个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相关推荐
- BZOJ 3036 绿豆蛙的归宿 期望DP
Time Limit: 2 Sec Memory Limit: 128 MB Submit: 610 Solved: 431 Description 随着新版百度空间的下线,Blog宠物绿豆蛙完成了它 ...
- 洛谷P4316 绿豆蛙的归宿(期望)
题意翻译 「Poetize3」 题目背景 随着新版百度空间的上线,Blog宠物绿豆蛙完成了它的使命,去寻找它新的归宿. 题目描述 给出一个有向无环图,起点为1终点为N,每条边都有一个长度,并且从起点出 ...
- AcWing 217. 绿豆蛙的归宿(期望dp)
设F[x]为从x到终点经过的路径长度的期望值, 若从x出发到达y1, y2, y3,..., yk, 边长分别是z1, z2, z3, ..., zk, 根据数学期望的定义得出: 由于从终点的状态开始 ...
- 概率与期望——P4316 绿豆蛙的归宿
概率与期望--P4316 绿豆蛙的归宿 题目 算法分析 Code 反思与总结 题目 P4316 绿豆蛙的归宿 算法分析 要计算路径的总长度期望,可以将每一个结点看作一个阶段,用dpdpdp来实现.(看 ...
- bzoj 3036: 绿豆蛙的归宿(Dp)
3036: 绿豆蛙的归宿 Time Limit: 2 Sec Memory Limit: 128 MB Submit: 724 Solved: 511 [Submit][Status][Discu ...
- 【BZOJ - 3036】绿豆蛙的归宿(概率DAG图dp,拓扑排序,概率dp,期望的线性性)
题干: 随着新版百度空间的下线,Blog宠物绿豆蛙完成了它的使命,去寻找它新的归宿. 给出一个有向无环的连通图,起点为1终点为N,每条边都有一个长度.绿豆蛙从起点出发,走向终点. 到达每一个顶点时,如 ...
- 洛谷P4316 绿豆蛙的归宿
题目背景 随着新版百度空间的上线,Blog 宠物绿豆蛙完成了它的使命,去寻找它新的归宿. 题目描述 给出张 nn 个点 mm 条边的有向无环图,起点为 11,终点为 nn,每条边都有一个长度,并且从起 ...
- 【BZOJ3036】绿豆蛙的归宿 概率DP
链接: #include <stdio.h> int main() {puts("转载请注明出处[辗转山河弋流歌 by 空灰冰魂]谢谢");puts("网址: ...
- 【BZOJ 3036】 3036: 绿豆蛙的归宿 (概率DP)
3036: 绿豆蛙的归宿 Time Limit: 2 Sec Memory Limit: 128 MB Submit: 491 Solved: 354 Description 随着新版百度空间的下 ...
最新文章
- centos7配置 console口_玩转KVM-一招打开vm的console口
- ASP.NET PipeLine #Reprinted#
- cypress测试框架与selenium_selenium自动化测试框架之PO设计模式
- dubbo + zookeeper 简介和部署
- python 找出日期_Python-在字符串中查找日期
- yum安装mysql my.cnf_Linxu Yum方式安装Mysql
- android 实现类似微信缓存和即时更新好友头像
- 康拓电梯卡延期与通楼修改教程
- bzoj2794 [Poi2012]Cloakroom ( 背包DP+离线 )
- coj 1256 天朝的单行道
- 怎样更改计算机的sid,关于Windows系统sid修改方法
- 9.3.2另一种计算机器2
- 【MidJourney】初体验——账号注册与基本操作
- android直接连接本地数据库文件,Android 直接连MySQL数据库
- 陈强教授《机器学习及R应用》课程 第九章作业
- 交换element-ui中$confirm弹出框的确定和取消按钮位置
- 【机器人关节空间与笛卡尔空间示教】
- 2.1.4 运算放大器的等效模型、理想运算放大器的特性
- AS32-TTL-100 LORA 433
- 微信支付重复回调,java微信支付回调问题
热门文章
- 85元一个万能工具箱,配齐24种螺丝刀+扳手,媲美德国工艺,家庭必备
- 微信新功能又来了,这些功能再次打开了我新世界的大门!
- 为什么大部分男生比女生高?原因让你意想不到
- 我背着女朋友,用 Python 偷偷抓取了她的行踪
- 众里寻 Bug 千百度,蓦然回首,它却在隔壁老张处……
- mysql 导入文件夹_MySQL-导入与导出
- java map 值排序_使用Java8 Stream API对Map类型按照键或值进行排序
- android 带弧形背景,[Android日常]绘制弧形渐变背景
- matlab dy,高手,请问用matlab如何解下面方程:y*Dy=a+b*y;我的计算结果里面含有wrightOmega ,怎样解出一般解?...
- Java JSON对象怎么遍历_Java遍历JsonObject对象