3036: 绿豆蛙的归宿

Time Limit: 2 Sec  Memory Limit: 128 MB
Submit: 491  Solved: 354

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

Source

【分析】

  这题题意绝对有问题!

3 2
1 2 1
1 3 5

  比如这个sample我输出5的代码是错的,AC代码输出3。。。。

  不是说起点到终点的路径的期望长度吗?那应该起点到终点的路径才算啊?

  唉。。。不懂。。。。我这种理解的代码的话呢,算一下起点到终点的概率,最后除一下这个概率,不能到终点的期望长度视为0.

  代码是这样的:

  

 #include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define Maxn 100010
#define Maxm 200010 struct node
{
int x,y,c,next;
}t[Maxm],tt[Maxm];
int len,first[Maxn],d[Maxn]; void ins(int x,int y,int c)
{
d[x]++;
t[++len].x=x;t[len].y=y;t[len].c=c;
t[len].next=first[x];first[x]=len;
}
int ln,ft[Maxn];
void INS(int x,int y){tt[++ln].x=x;tt[ln].y=y;tt[ln].next=ft[x];ft[x]=ln;} bool vis[Maxn];
double f[Maxn],g[Maxn]; void dfs(int x)
{
if(vis[x]) return;vis[x]=;
for(int i=ft[x];i;i=tt[i].next)
{
int y=tt[i].y;
dfs(y);
g[x]+=g[y]*1.0/d[y];
}
} int n,m;
double ffind(int x)
{
if(x==n) return f[x]=;
if(vis[x]) return f[x];vis[x]=;
for(int i=first[x];i;i=t[i].next)
{
int y=t[i].y;
ffind(y);
if(f[y]==&&y!=n) continue;
f[x]+=(f[y]+t[i].c)*1.0/d[x];
}
} int main()
{
scanf("%d%d",&n,&m);
len=;ln=;
memset(first,,sizeof(first));
memset(ft,,sizeof(ft));
memset(d,,sizeof(d));
for(int i=;i<=m;i++)
{
int x,y,c;
scanf("%d%d%d",&x,&y,&c);
ins(x,y,c);INS(y,x);
}
g[]=;
memset(vis,,sizeof(vis));vis[]=;
dfs(n);
memset(vis,,sizeof(vis));
ffind();
printf("%.2lf\n",f[]/g[n]);
return ;
}

  什么都没管的AC代码是这样的:

 #include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define Maxn 100010
#define Maxm 200010 struct node
{
int x,y,c,next;
}t[Maxm],tt[Maxm];
int len,first[Maxn],d[Maxn]; void ins(int x,int y,int c)
{
d[x]++;
t[++len].x=x;t[len].y=y;t[len].c=c;
t[len].next=first[x];first[x]=len;
} bool vis[Maxn];
double f[Maxn]; int n,m;
double ffind(int x)
{
if(vis[x]) return f[x];vis[x]=;
for(int i=first[x];i;i=t[i].next)
{
int y=t[i].y;
ffind(y);
f[x]+=(f[y]+t[i].c)*1.0/d[x];
}
} int main()
{
scanf("%d%d",&n,&m);
len=;
memset(first,,sizeof(first));
for(int i=;i<=m;i++)
{
int x,y,c;
scanf("%d%d%d",&x,&y,&c);
ins(x,y,c);
}
memset(vis,,sizeof(vis));
ffind();
printf("%.2lf\n",f[]);
return ;
}

【醉了。。。

2017-04-22 11:00:01

【BZOJ 3036】 3036: 绿豆蛙的归宿 (概率DP)的更多相关文章

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

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

  2. P4316 绿豆蛙的归宿 期望DP

    P4316 绿豆蛙的归宿 期望DP DAG上,每条边有边权,走向相连每条路的概率相等,问从起点到终点所经过的路径总长度期望 因为发现终点走到终点期望为0,定义\(f[i]\)从终点走到\(i\)所经过 ...

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

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

  4. 【BZOJ3036】绿豆蛙的归宿 概率与期望

    最水的概率期望,推荐算法合集之<浅析竞赛中一类数学期望问题的解决方法> #include <iostream> #include <cstdio> using na ...

  5. 【bzoj3036】绿豆蛙的归宿 期望dp

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

  6. Luogu4316 | 绿豆蛙的归宿 (期望DP)

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

  7. 【BZOJ 3036】 绿豆蛙的归宿

    求期望的题目(~~~water~~~) 压了下代码,压成15行hhh: 我把代码压成这么丑估计也没有人看吧: 毕竟是zky讲的一个水题,就当给博客除草了:    dfs回溯时求当前节点的f,除以当前节 ...

  8. Bzoj 3036: 绿豆蛙的归宿(期望)

    3036: 绿豆蛙的归宿 Time Limit: 2 Sec Memory Limit: 128 MB Description 随着新版百度空间的下线,Blog宠物绿豆蛙完成了它的使命,去寻找它新的归 ...

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

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

随机推荐

  1. llg的农场(farm)

    评测传送门 [题目描述] llg 是一名快乐的农民,他拥有一个很大的农场,并且种了各种各样的瓜果蔬菜,到了每年秋天,他就可以把所有蔬菜水果卖到市场上,这样他就可以获利.但今年他遇到了一个难题——有许多 ...

  2. STL-map and multimap

    定义 map<int,int> a; map<int,string> a; map<double,int> a; …… 首先要知道的一些 Map是STL的一个关联容 ...

  3. xgboost与sklearn的接口

    xgb使用sklearn接口(推荐) XGBClassifier from xgboost.sklearn import XGBClassifier clf = XGBClassifier( sile ...

  4. react页面间传递参数

    react-router页面跳转,带请求参数 this.context.router.push({pathname:'/car_datail',state:{item:"hello" ...

  5. 2016.6.19——Length of Last Word

    Length of Last Word 本题收获: 1.str.size()为负 2.size_t引发的死循环 3.题目思路,有时在写代码时很不清楚边界条件的输出值是什么,若为面试,一定要问清楚. 题 ...

  6. 使用RegSetValueEx修改注册表时遇到的问题(转)

    原文转自 http://blog.csdn.net/tracyzhongcf/article/details/4076870 1.今天在使用RegSetValueEx时发现一个问题: RegSetVa ...

  7. Vagrant 无法校验手动下载的 Homestead Box 版本

    起因 4年前电脑,配置不太好了,现有的 Homestead 运行起来太吃内存.在修改了 Homestead.yaml 文件里 memory 选项的内存配置为 1024 后,应用最新配置重启失败. 索性 ...

  8. ### mysql系统结构_3_Mysql_Learning_Notes

    mysql系统结构_3_Mysql_Learning_Notes 存储层,内存结构 全局(buferpool) 只分配一次 全局共享 连接/会话(session) 针对每个会话/线程分配 按需动态分配 ...

  9. Web基础 - Cookie与Session

    常用的调试以及抓包工具: Wireshark tcpdump fiddler 首先弄清楚几个概念,什么是cookie,什么是session,以及为什么会有这两个东东,这两个东东的作用是什么? 这里使用 ...

  10. 我常用的 Python 调试工具 - 博客 - 伯乐在线

    .ckrating_highly_rated {background-color:#FFFFCC !important;} .ckrating_poorly_rated {opacity:0.6;fi ...