[数学期望]BZOJ 1415
来源:互联网 发布:oppo应用分身软件 编辑:程序博客网 时间:2024/05/17 02:13
Description
题解
既然是平均情况,显然就是求数学期望。我们会发现,每一个时刻猫鼠之间的最短路径一定是减小了,所以不会出现转圈的情况,所以可以用记忆化搜索,用
给出代码:
#include<cstdio>#include<cstring>#include<algorithm>#define maxn 1006using namespace std;int n,e,p1,p2,tot,lnk[maxn],son[maxn*2],nxt[maxn*2],ent[maxn],dis[maxn],que[maxn], p[maxn][maxn];bool vis[maxn];double INF,f[maxn][maxn];int _read(){ char ch=getchar();int sum=0; while(!(ch>='0'&&ch<='9'))ch=getchar(); while(ch>='0'&&ch<='9')sum=sum*10+ch-48,ch=getchar(); return sum;}void add(int x,int y){ nxt[++tot]=lnk[x];son[tot]=y;lnk[x]=tot;ent[x]++;}void bfs(int x){ memset(vis,1,sizeof(vis)); int hed=0,tal=1;que[1]=x;vis[x]=0;dis[x]=0; while(hed!=tal){ for(int j=lnk[que[++hed]];j;j=nxt[j]) if(vis[son[j]]){ que[++tal]=son[j]; vis[son[j]]=0; dis[son[j]]=dis[que[hed]]+1; } }}double DP(int x,int y){ if(x==y){return f[x][y]=0;} if(f[x][y]!=INF)return f[x][y]; if(p[x][y]==y)return f[x][y]=1; if(p[p[x][y]][y]==y)return f[x][y]=1; f[x][y]=1; f[x][y]+=DP(p[p[x][y]][y],y)/(ent[y]+1); for(int j=lnk[y];j;j=nxt[j])if(son[j]!=x) if(p[x][son[j]]!=son[j]) f[x][y]+=DP(p[p[x][y]][y],son[j])/(ent[y]+1); return f[x][y];}int main(){ freopen("forest.in","r",stdin); freopen("forest.out","w",stdout); n=_read();e=_read();p1=_read();p2=_read(); for(int i=1,x,y;i<=e;i++)x=_read(),y=_read(),add(x,y),add(y,x); memset(p,63,sizeof(p));memset(f,127,sizeof(f));INF=f[0][0]; for(int i=1;i<=n;i++){ bfs(i); for(int j=1;j<=n;j++) for(int k=lnk[j];k;k=nxt[k]) if((dis[son[k]]+1==dis[j])&&(son[k]<p[j][i]))p[j][i]=son[k]; } printf("%.3lf",DP(p1,p2)); return 0;}
0 0
- [数学期望]BZOJ 1415
- [期望 数学] BZOJ 2720 [Violet 5]列队春游
- BZOJ 1426: 收集邮票 期望DP,数学推导
- bzoj 4481: [Jsoi2015]非诚勿扰 树状数组+数学期望
- 数学期望
- 数学期望
- 数学期望
- BZOJ 1415 - 利用定义计算期望 + DP
- bzoj 1415 聪聪和可可 【期望】
- 刷一波数学期望,数论,数学
- 条件数学期望
- 一个数学期望问题
- 【数学期望】poj3682
- hdu 4336 数学期望
- Candy( 数学期望 )
- 条件数学期望
- 条件数学期望
- [UVA10288] Coupons && 数学期望
- GetLastError函数
- [AC自动机 + DP] BZOJ1030: [JSOI2007]文本生成器
- [Python]浅拷贝与深拷贝
- 剑指offer--二叉搜索树的后序遍历序列
- 【mark】QQ 探测,爬取网页内容
- [数学期望]BZOJ 1415
- adc驱动实例(工作队列+等待队列+设备树+属性文件)
- Java入门学习-学会try/catch/throw的用法。做出一个计算器除法功能,除以0时程序必须给出提示。
- 字符串匹配
- 大数据时代的小数字感:数据再有价值,别人听不懂照样没用
- Unity3DGame学习笔记(6):粒子系统
- 集合框架-统计字符串中每个字符出现的次数案例图解
- JavaScript中的运算符
- 1024: 求1+2!+3!+...+N!的和