博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDOJ 5001 Walk
阅读量:5764 次
发布时间:2019-06-18

本文共 2540 字,大约阅读时间需要 8 分钟。

概率DP

dp[j][d] 表示不经过i点走d步到j的概率, dp[j][d]=sigma ( dp[k][d-1] * Probability )

ans = sigma ( dp[j][D] )

Walk

Time Limit: 30000/15000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 401    Accepted Submission(s): 261
Special Judge


Problem Description
I used to think I could be anything, but now I know that I couldn't do anything. So I started traveling.
The nation looks like a connected bidirectional graph, and I am randomly walking on it. It means when I am at node i, I will travel to an adjacent node with the same probability in the next step. I will pick up the start node randomly (each node in the graph has the same probability.), and travel for d steps, noting that I may go through some nodes multiple times.
If I miss some sights at a node, it will make me unhappy. So I wonder for each node, what is the probability that my path doesn't contain it.
 

Input
The first line contains an integer T, denoting the number of the test cases.
For each test case, the first line contains 3 integers n, m and d, denoting the number of vertices, the number of edges and the number of steps respectively. Then m lines follows, each containing two integers a and b, denoting there is an edge between node a and node b.
T<=20, n<=50, n-1<=m<=n*(n-1)/2, 1<=d<=10000. There is no self-loops or multiple edges in the graph, and the graph is connected. The nodes are indexed from 1.
 

Output
For each test cases, output n lines, the i-th line containing the desired probability for the i-th node.
Your answer will be accepted if its absolute error doesn't exceed 1e-5.
 

Sample Input
 
2 5 10 100 1 2 2 3 3 4 4 5 1 5 2 4 3 5 2 5 1 4 1 3 10 10 10 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 4 9
 

Sample Output
 
0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.6993317967 0.5864284952 0.4440860821 0.2275896991 0.4294074591 0.4851048742 0.4896018842 0.4525044250 0.3406567483 0.6421630037
 

Source
 

#include 
#include
#include
#include
#include
using namespace std;const int maxn=10010;int n,m,D;vector
g[maxn];double dp[55][maxn];int main(){ int T_T; scanf("%d",&T_T); while(T_T--) { scanf("%d%d%d",&n,&m,&D); for(int i=0;i<=n+1;i++) g[i].clear(); while(m--) { int a,b; scanf("%d%d",&a,&b); g[a].push_back(b); g[b].push_back(a); } for(int i=1;i<=n;i++) { memset(dp,0,sizeof(dp)); for(int j=1;j<=n;j++) { if(i!=j) dp[j][0]=1.0/n; } for(int d=1;d<=D;d++) { for(int j=1;j<=n;j++) { if(j==i) continue; for(int k=0,sz=g[j].size();k

转载地址:http://mkwux.baihongyu.com/

你可能感兴趣的文章
限制域用户多点登录--脚本
查看>>
Cisco PIX防火墙的安装流程
查看>>
配置系列:ssm中applicationContext-mybatis.xml的简单配置
查看>>
mysql或者mariadb备份脚本
查看>>
extundelete恢复文件
查看>>
我的友情链接
查看>>
电池温度检测原理和示例代码
查看>>
Linux服务器性能评估与优化、监控利器---dstat应用
查看>>
hdu 2842 Chinese Rings 矩阵快速幂
查看>>
解决tomcat占用CPU过高
查看>>
Powershell进阶学习(4) Powershell强大的利器“管道”
查看>>
关于GNU GPL
查看>>
Entity Framework Code First实体对象变动跟踪
查看>>
request.getServletPath()和request.getPathInfo()用法
查看>>
nginx在响应request header时候带下划线的需要开启的选项
查看>>
工(程师)欲善其事,必先利其(编译)器——《Android Studio实战——快速、高效地构建Android应用》...
查看>>
Linux下DHCP服务器配置
查看>>
css相对定位和绝对定位
查看>>
计算机进阶推荐书单
查看>>
6.1 压缩打包介绍;6.2 gzip压缩工具;6.3 bzip2压缩工具;6.4 xz压缩工具
查看>>