先贴题面w

1065. [Nescafe19] 绿豆蛙的归宿

★   输入文件:ldfrog.in   输出文件:ldfrog.out   简单对比
时间限制:1 s   内存限制:128 MB

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

Description

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

Input

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

Output

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

Sample Input

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

Sample Output

4 4

7.00

Time Limit

各个测试点1s

HINT

对于20%的数据   N<=100
对于40%的数据   N<=1000
对于60%的数据   N<=10000
对于100%的数据  N<=100000,M<=2*N

我们可以设$f_{i}$为从结点$i$到结点$v$的期望距离

由于题目保证数据是$DAG$所以我们可以按照拓扑序的逆序来递推而不用$Gaussian Elimination$解方程组

先删结点$v$的出边,然后DFS一遍把拓扑序扔到队列里

然后按顺序推,公式如下:\[f_i=\sum_{(i,j)\in E}\frac{f_j+dis}{outDegree}\]

其中$dis$为$(i,j)$边的长度,$outDegree$为结点$i$的出度

(其实完全不用保存拓扑序直接DFS一遍然后在回溯的时候推就可以的QAQ可能因为我比较蒟蒻吧)

好了不扯了...参考代码吧OwO

GitHub

 /*********************************
Judge Result:Accepted *********************************/
#include <queue>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm> const int MAXE=;
const int MAXV=; struct Edge{
int from;
int to;
int dis;
Edge* next;
}; Edge E[MAXE];
Edge* head[MAXV];
Edge* top=E; int v;
int e;
int otd[MAXV];
int ind[MAXV];
double dp[MAXV];
bool visited[MAXV];
std::queue<int> tpo; void Insert(int,int,int);
void Initialize();
void DFS(int root); int main(){
Initialize();
head[v]=NULL;
dp[v]=;
DFS();
while(!tpo.empty()){
int top=tpo.front();
tpo.pop();
for(Edge* i=head[top];i!=;i=i->next){
dp[top]+=(double(i->dis)+dp[i->to])/double(otd[top]);
}
}
printf("%.2lf\n",dp[]);
return ;
} void DFS(int root){
visited[root]=true;
for(Edge* i=head[root];i!=NULL;i=i->next){
if(!visited[i->to])
DFS(i->to);
}
tpo.push(root);
} void Initialize(){
#ifndef ASC_LOCAL
freopen("ldfrog.in","r",stdin);
freopen("ldfrog.out","w",stdout);
#endif
int from,to,dis;
scanf("%d%d",&v,&e);
for(int i=;i<e;i++){
scanf("%d%d%d",&from,&to,&dis);
Insert(from,to,dis);
}
} inline void Insert(int from,int to,int dis){
top->to=to;
top->dis=dis;
top->from=from;
top->next=head[from];
head[from]=top;
otd[from]++;
ind[to]++;
top++;
}

Backup

图包作为结束w

[COGS 1065] 绿豆蛙的归宿的更多相关文章

  1. 1065. [Nescafe19] 绿豆蛙的归宿(概率)

    1065. [Nescafe19] 绿豆蛙的归宿 ★   输入文件:ldfrog.in   输出文件:ldfrog.out   简单对比时间限制:1 s   内存限制:128 MB [背景] 随着新版 ...

  2. [cogs1065]绿豆蛙的归宿

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

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

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

  4. BZOJ3036: 绿豆蛙的归宿&Wikioi2488:绿豆蛙的归宿

    3036: 绿豆蛙的归宿 Time Limit: 2 Sec  Memory Limit: 128 MBSubmit: 108  Solved: 73[Submit][Status] Descript ...

  5. BZOJ 3036: 绿豆蛙的归宿( 期望dp )

    从终点往起点倒推 . 在一个图 考虑点 u , 出度为 s : s = 0 , d[ u ] = 0 ; s ≠ 0 , 则 d( u ) = ( ∑ d( v ) ) / s ( ( u , v ) ...

  6. BZOJ3036绿豆蛙的归宿

    BZOJ3036绿豆蛙的归宿 锲下陟凝 褰宓万 郝瓦痕膳 叶诙摞 А知π剧 椐猊∫距 屠缲佗 ゲ蕖揪 俜欧彖鹤 磲砩ほ #琛扶 觅电闸ス 捆鳢げ 浜窠 魂睨"烁 蕞滗浼 洒ヂ跪 ...

  7. P4316 绿豆蛙的归宿(期望)

    P4316 绿豆蛙的归宿 因为非要用bfs所以稍微麻烦一点qwq(大家用的都是dfs) 其实问题让我们求的就是经过每条边的概率*边权之和 我们可以用bfs把图遍历一遍处理概率,顺便把每条边的概率*边权 ...

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

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

  9. codevs 2488 绿豆蛙的归宿

    2488 绿豆蛙的归宿 http://codevs.cn/problem/2488/  时间限制: 1 s  空间限制: 64000 KB  题目等级 : 黄金 Gold   题目描述 Descrip ...

随机推荐

  1. webpack 插件拾趣 (1) —— webpack-dev-server

    结束了一季的忙碌,我这封笔已久的博客也终究该从春困的咒印中复苏,想来写些实用易读的作为开篇,自然是最好不过. 新开个 webpack 插件/工具介绍的文章系列,约莫每周更新一篇篇幅适中的文章聊以共勉, ...

  2. Behavior的使用(一):页面跳转NavigateToPageAction

    Behavior的使用,让UI设计师能够更加方便的进行UI设计,更高效地和开发进行合作.Behavior有三种触发方式:EventTriggerBehavior事件触发,DataTriggerBeha ...

  3. ionic 项目中创建侧边栏的具体流程分4步简单学会

    这是在学习ionic时,当时遇到的一些问题,觉得很难,就记笔记下来了,现在觉得如果可以拿来分享,有可能会帮助到遇到同样问题的人 ionic slidemenu 项目流程: cd pretices(自己 ...

  4. 深入理解PHP对象注入

    0x00 背景 php对象注入是一个非常常见的漏洞,这个类型的漏洞虽然有些难以利用,但仍旧非常危险,为了理解这个漏洞,请读者具备基础的php知识. 0x01 漏洞案例 如果你觉得这是个渣渣洞,那么请看 ...

  5. VMware安装CentOS 提示:已将该虚拟机配置为使用 64 位客户机操作系统。但是,无法执行 64 位操作。解决方案

    安装虚拟机遇到错误: 在网上查了查资料,发现CPU支持VT技术的就能支持vmware中安装64位虚拟机. 以下是操作步骤: 1)到网上下载一个securable.exe,测试以下机器是否支持VT. l ...

  6. 【 js 基础 】Javascript “继承”

    是时候写一写 "继承"了,为什么加引号,因为当你阅读完这篇文章,你会知道,说是 继承 其实是不准确的. 一.类1.传统的面向类的语言中的类:类/继承 描述了一种代码的组织结构形式. ...

  7. 深入理解YYCache

    前言 本篇文章将带来YYCache的解读,YYCache支持内存和本地两种方式的数据存储.我们先抛出两个问题: YYCache是如何把数据写入内存之中的?又是如何实现的高效读取? YYCache采用了 ...

  8. 15套java架构师大型分布式综合项目实战、千万高并发-视频教程

    * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩 展 ...

  9. Python基础-类变量和实例变量

    Python基础-类变量和实例变量 写在前面 如非特别说明,下文均基于Python3 大纲: 1. 类变量和实例变量 在Python Tutorial中对于类变量和实例变量是这样描述的: Genera ...

  10. Pycharm创建的virtualenv环境缺失pip.exe的问题(Windows系统)

    Windows环境: 1. Python安装在d:\Python\Python35下, Python新版本安装时默认会勾选pip功能 2. PyCharm的Settings中Create Virtua ...