hdu 5001 概率dp
来源:互联网 发布:黑科技软件 编辑:程序博客网 时间:2024/04/28 08:41
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.
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.
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.
Your answer will be accepted if its absolute error doesn't exceed 1e-5.
25 10 1001 22 33 44 51 52 43 52 51 41 310 10 101 22 33 44 55 66 77 88 99 104 9
0.00000000000.00000000000.00000000000.00000000000.00000000000.69933179670.58642849520.44408608210.22758969910.42940745910.48510487420.48960188420.45250442500.34065674830.6421630037
起点随意,往哪走随意(概率相同,与面临选择的个数有关),问走d步走不到每个点的概率
思路:
概率dp,dp[i][j]表示走了i步第一次到达j的概率
ac代码:
#include <iostream>#include <cstdio>#include <cstring>#include <vector>using namespace std;vector<int> mp[55];double dp[10005][55];int main(){ int n,m,d; int t; cin>>t; while(t--) { cin>>n>>m>>d; for(int i=0;i<=n;i++) mp[i].clear(); int a,b; for(int i=1;i<=m;i++) { scanf("%d%d",&a,&b); mp[a].push_back(b); mp[b].push_back(a); } for(int i=1;i<=n;i++) { double ans=0; memset(dp,0,sizeof(dp)); for(int j=1;j<=n;j++) dp[0][j]=1.0/n; for(int j=0;j<d;j++) { for(int k=1;k<=n;k++) { if(k==i)//关键判断,如果走到i的话就不再往后扩展,保证后面的都是第一一次到i continue; for(int h=0;h<mp[k].size();h++) { dp[j+1][mp[k][h]]+=(dp[j][k]/mp[k].size()); } } } for(int j=0;j<=d;j++)//求一下和就可以了 ans+=dp[j][i]; printf("%.6lf\n",1.0-ans); } } 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
- 微信小程序------轮播图
- java SwingUtilities.getAncestorOfClass(Class c,Component comp)的用法
- HDU 4786 Fibonacci Tree
- 12C RAC环境节点宕机问题
- Android app之产品图标规范
- hdu 5001 概率dp
- PHP异常处理
- 测验与作业【第一周】网络爬虫之规则
- android studio 快速删除无用的import包
- golang学习笔记
- css实现鼠标移动图片居中放大效果
- mb_detect_encoding
- oracle导入dmp文件
- Java内存分配之堆、栈和常量池