HDU 5001 Walk
解题思路:这是一道简单的概率dp,只要处理好相关的细节就可以了。
dp[d][i]表示走d步时走到i的改概率,具体参考代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<cstring>
using namespace std;
const int N = ;
const int M = ;
double dp[N][M];
int n, m, t, d;
vector<int> v[M]; //vector表示不定长数组 double solve(int x)
{
double ans = ;
memset(dp, , sizeof(dp));
for(int i = ; i <= n; i++) dp[][i] = 1.0/n;// 表示还没走时,走到每个点的概率
for(int i = ; i < d; i++)
{
for(int j = ; j <= n; j++)
{
if(j == x) continue; //不会走到与自己相同的点上
int s = v[j].size(); //与点j相连的数有多少个
for(int k = ; k < s; k++)
{
int c = v[j][k]; //与j相连的第k个数
dp[i+][c] += dp[i][j]*1.0/s; //这里很难给你讲清楚,自己好好思考
//心中有个具体的场景就更好
}
}
}
for(int i = ; i <= n; i++)
{
if(i == x) continue;
ans += dp[d][i]; //第d步到其它所有点的概率之和为
//第d步没走到第x点的概率。
}
return ans;
} int main()
{
int a, b;
scanf("%d", &t);
while(t--)
{
scanf("%d %d %d", &n, &m, &d);
for(int i = ; i <= n; i++) v[i].clear();
while(m--)
{
scanf("%d %d", &a, &b);
v[a].push_back(b); //向尾部添加元素,关于vector的用法,自己参考资料
v[b].push_back(a);
}
for(int i = ; i <= n; i++) printf("%.10lf\n", solve(i));
}
return ;
}
HDU 5001 Walk的更多相关文章
- Hdu 5001 Walk 概率dp
Walk Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5001 Desc ...
- HDU - 5001 Walk(概率dp+记忆化搜索)
Walk I used to think I could be anything, but now I know that I couldn't do anything. So I started t ...
- HDU 5001 Walk (暴力、概率dp)
Walk Time Limit: 30000/15000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Sub ...
- hdu 5335 Walk Out (搜索)
题目链接: hdu 5335 Walk Out 题目描述: 有一个n*m由0 or 1组成的矩形,探险家要从(1,1)走到(n, m),可以向上下左右四个方向走,但是探险家就是不走寻常路,他想让他所走 ...
- HDU 5001
http://acm.hdu.edu.cn/showproblem.php?pid=5001 每次去掉要算的点,求出到达其他点的概率,就是不能到达这个点的概率 开始想去算到达这个点的概率,再去减,不过 ...
- hdu 4444 Walk (离散化+建图+bfs+三维判重 好题)
Walk Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submi ...
- hdu 5001 从任意点出发任意走d步不经过某点概率
http://acm.hdu.edu.cn/showproblem.php?pid=5001 给定n个点m条边的无向图问从任意点出发任意走d步,从不经过某个点的概率 本想先算路过每个点的概率然后用1减 ...
- hdu 5001 概率DP 图上的DP
http://acm.hdu.edu.cn/showproblem.php?pid=5001 当时一看是图上的就跪了 不敢写,也没退出来DP方程 感觉区域赛的题 一则有一个点难以想到 二则就是编码有 ...
- HDU 4444 Walk (离散化建图+BFS+记忆化搜索) 绝对经典
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4444 题意:给你一些n个矩形,给你一个起点,一个终点,要你求从起点到终点最少需要转多少个弯 题解:因为 ...
随机推荐
- OleDbType.Decimal在插入DB2后会默认赋值0.00,改为OleDbType.Double则正常
private void InsertShopClaimsTarget(ContinueTargetData.RT_SHOPCLAIMSTARGETRow aRow) { StringBuilder ...
- C++运算符重载——重载一元运算符
0.重载一元操作符的方法 一元运算符即只需要一个操作用的运算符,如取地址运算符(&).复数(-).自减(--).自加(++)等. 运算符重载可以分为3种方式:类的非静态成员函数.类的友元函数. ...
- wamp中的phpmyadmin打开出现:#1045 - Access denied for user 'root'@'localhost' (using password: NO)
详细内容: MySQL said: #1045 - Access denied for user 'root'@'localhost' (using password: NO) phpMyAdmin ...
- ios--集成支付宝钱包支付iOS SDK的方法与经验
文/胖花花(简书作者)原文链接:http://www.jianshu.com/p/fe56e122663e著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 没想到,支付宝的SDK是我目前 ...
- USACO Section 2.1: Hamming Codes
挺简单的一道题 /* ID: yingzho1 LANG: C++ TASK: hamming */ #include <iostream> #include <fstream> ...
- 《Java编程那点事儿》读书笔记(六)——异常处理
1.抛出异常:throw 异常对象; 下面的代码是一个进制转换代码,可以转换为2进制和8进制,如果输入其他参数,则抛出异常. public static String transform(int va ...
- How to: Write Object Data to an XML File
This example writes the object from a class to an XML file using the XmlSerializer class. Namespace: ...
- jquery来跨域提交表单
说说用jquery来实现跨域提交表单 在jQuery中,我们使用json数据类型,通过getJSON方法来实现从服务端获取或发送数据,而当要向不同远程服务器端提交或者获取数据时,要采用jsonp数据类 ...
- 用java在mysql中随机插入9000 000条数据
package query; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; ...
- java连接mysql的一个小例子
想要用java 连接数据库,需要在classpath中加上jdbc的jar包路径 在eclipse中,Project的properties里面的java build path里面添加引用 连接成功的一 ...