hdu 5001 概率dp
来源:互联网 发布:什么是php框架 编辑:程序博客网 时间:2024/04/27 22:10
给你n个点 每条边 最初你在n个点是等概率的 问在k步后 每个点不经过的概率 之前dp直接算到达的概率然后用1去减 结果测试数据都没过,想了想也是 里面有算重复的,
dp【i】【j】 表示第i步到达j点的概率 然后枚举起点 dp都要清空并初始化(这就是为什么直接不能做了) 对于每个起点 不能到达它也就是到达了别的点 这样就好算了
#include<stdio.h>#include<string.h>#include<iostream>using namespace std;double dp[10010][55];int leap[55],map[55][55],n,k;int deal(int star){ int i,j; for(i=1;i<=k;i++) { for(j=1;j<=n;j++) { if(j==star) continue; for(int x=1;x<=n;x++) { if(x==j) continue; if(map[j][x]==1) { dp[i][x]+=dp[i-1][j]/leap[j]; } } } } double t=0; for(i=1;i<=n;i++) if(i!=star) t+=dp[k][i]; printf("%.10lf\n",t);}int main(){ int m,i,j,star,end,T; scanf("%d",&T); while(T--) { scanf("%d%d%d",&n,&m,&k); memset(map,-1,sizeof(map)); memset(leap,0,sizeof(leap)); for(i=1;i<=m;i++) { int star,end; scanf("%d%d",&star,&end); map[star][end]=map[end][star]=1; leap[star]++; leap[end]++; } for(i=1;i<=n;i++) { memset(dp,0,sizeof(dp)); for(j=1;j<=n;j++) dp[0][j]=1.0/n; deal(i); } } return 0;}
0 0
- hdu 5001 概率dp
- hdu 5001 概率dp
- hdu 5001 概率dp
- hdu 5001 Walk (概率dp)
- [概率dp] hdu 5001 Walk
- HDU - 5001 Walk(概率dp)
- hdu 5001 Walk ( 概率DP )
- hdu 5001 Walk 概率DP
- hdu 5001 Walk 【概率dp】
- HDU 5001 Walk (概率dp)
- HDU 5001 Walk(概率DP)
- hdu 5001 walk (概率dp+矩阵)
- HDU 5001 概率DP || 记忆化搜索
- [ACM] hdu 5001 Walk (概率DP)
- HDU 5001 Walk(暴力+概率DP)
- HDU 5001 Walk 概率DP入门!
- HDU 5001 Walk (概率DP)
- hdu football 概率DP
- HOG相关文章
- Windows Server 2013 域—域的定义
- 详析java的回调
- MongoDB备份和还原备份
- JavaScript 作用域链解析
- hdu 5001 概率dp
- NSTimer的开启关闭
- Android的Activity组件实战细节解析
- mongodb3.0 性能测试报告 三
- Java模拟异步消息的发送与回调
- Git 中对象模型和文件的详细视图
- perl 两个字符串输出相同但是比较失败
- AP 结帐
- vector入门