BZOJ 3036 绿豆蛙的归宿 期望动规

2024-03-30 16:48

本文主要是介绍BZOJ 3036 绿豆蛙的归宿 期望动规,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Description

随着新版百度空间的下线,Blog宠物绿豆蛙完成了它的使命,去寻找它新的归宿。

给出一个有向无环的连通图,起点为1终点为N,每条边都有一个长度。绿豆蛙从起点出发,走向终点。
到达每一个顶点时,如果有K条离开该点的道路,绿豆蛙可以选择任意一条道路离开该点,并且走向每条路的概率为 1/K 。
现在绿豆蛙想知道,从起点走到终点的所经过的路径总长度期望是多少?

Input

第一行: 两个整数 N M,代表图中有N个点、M条边
第二行到第 1+M 行: 每行3个整数 a b c,代表从a到b有一条长度为c的有向边

Output


从起点到终点路径总长度的期望值,四舍五入保留两位小数。


Sample Input

4 4
1 2 1
1 3 2
2 3 3
3 4 4

Sample Output

7.00

HINT



对于100%的数据  N<=100000,M<=2*N






传送门
第一道期望题……
感觉对于“期望”这个概念的理解还有待提升。



#include<bits/stdc++.h>
using namespace std;
const int N=100005;
int n,m,Ecnt,son[N];
bool vis[N];
double dp[N];
struct Edge{int next,to,val;
}E[N<<1];int head[N];
void add(int u,int v,int w){E[++Ecnt].next=head[u];E[Ecnt].to=v;E[Ecnt].val=w;head[u]=Ecnt;son[u]++;
}
void dfs(int u){vis[u]=1,dp[u]=0.0;for (int i=head[u];i;i=E[i].next){int v=E[i].to;if (!vis[v]) dfs(v);dp[u]+=dp[v]+E[i].val;}if (son[u]) dp[u]/=(double)son[u];
}
int main(){scanf("%d%d",&n,&m);int x,y,z;for (int i=1;i<=m;i++)scanf("%d%d%d",&x,&y,&z),add(x,y,z);dfs(1);printf("%.2lf\n",dp[1]);return 0;
}

这篇关于BZOJ 3036 绿豆蛙的归宿 期望动规的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/862032

相关文章

POJ 1050 To the Max(枚举+动规)

题目: http://poj.org/problem?id=1050 题解: 此题转化成一维后就相当于求最大连续子序列了,可以枚举所有的行组合,把枚举到的起始行到终止行的值按列相加存入一个一维数组。 代码: #include<cstdio>#include<cstring>int a[101][101];int value[101];int dp[101];int max(

【BZOJ】1324 Exca王者之剑 最大权独立集

传送门:【BZOJ】1324  Exca王者之剑 题目分析:赤裸裸的最大权独立集。。。最小割解决 代码如下: #include <cstdio>#include <vector>#include <cstring>#include <algorithm>using namespace std ;#define REP( i , a , b ) for ( int

【BZOJ】1026: [SCOI2009]windy数 数位DP

传送门:【BZOJ】1026: [SCOI2009]windy数 题目分析:数位DP水题。 代码如下: #include <stdio.h>#include <cstring>#include <algorithm>#define rep( i , a , b ) for ( int i = a ; i < b ; ++ i )#define For( i ,

【BZOJ】2152: 聪聪可可 点分治

传送门:【BZOJ】2152: 聪聪可可 题目分析:记录权值和%3的路径的个数。。。然后去重。。没了。。 代码如下: #include <vector>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std ;typedef lo

概率、期望

UVA1636 决斗 Headshot #include <bits/stdc++.h>using namespace std;char s[110];int shoot, no, len;int main(){while(scanf("%s", &s)!=EOF){shoot=0;no=0;len=strlen(s);s[len]=s[0]; for(int i=0; i<len;

概率学 笔记一 - 概率 - 随机变量 - 期望 - 方差 - 标准差(也不知道会不会有二)

概率不用介绍,它的定义可以用一个公式写出: 事件发生的概率 = 事件可能发生的个数 结果的总数 事件发生的概率=\cfrac{事件可能发生的个数}{结果的总数} 事件发生的概率=结果的总数事件可能发生的个数​ 比如一副标准的 52 张的扑克牌,每张牌都是唯一的,所以,抽一张牌时,每张牌的概率都是 1/52。但是有人就会说了,A 点明明有四张,怎么会是 1/52 的概率。 这就需要精准的指出

2015年总结与2016年期望

2015年度工作述职报告 部门:   设计部        职位:   前端工程师    时间: 2016 年 01 月 11 日 1. 工作中的心得以及收获 一、回顾2015参与的项目: 溯源:质量报告,检测报告,打印BUG 工作台:bootstrap版 --> 微信切换版(张鑫旭)--> SUI框架版 工作台模块:工厂和分仓,经销商,业务员,会员,导购,销管等工

2014.3树形动规练习2

1、  树的重量 源程序名            weight.???(pas, c, cpp) 可执行文件名        weight.exe 输入文件名          weight.in 输出文件名          weight.out 【问题描述】     树可以用来表示物种之间的进化关系。一棵“进化树”是一个带边权的树,其叶节点表示一个物种,两个叶节点之间的距离表示

2014.2树形动规练习1

1、        加分二叉树 (binary.pas/c/cpp) 【问题描述】     设一个n个节点的二叉树tree的中序遍历为(l,2,3,…,n),其中数字1,2,3,…,n为节点编号。每个节点都有一个分数(均为正整数),记第i个节点的分数为di,tree及它的每个子树都有一个加分,任一棵子树subtree(也包含tree本身)的加分计算方法如下:    subtree的左子树的

中年男性为何普遍“丧”,在社会的舞台上,中年男性常常被赋予诸多期望和责任

在社会的舞台上,中年男性常常被赋予诸多期望和责任。他们被视作家庭的顶梁柱、事业的中流砥柱,然而,近年来却有越来越多的中年男性呈现出一种普遍的“丧”态。这种现象引起了广泛的关注和思考,究竟是什么原因让曾经意气风发的他们陷入了这样的困境呢?   一、社会压力的重负   中年男性处于人生的一个关键阶段,此时他们面临着来自多方面的巨大社会压力。   首先,职业压力如影随