HDU5001-Walk-AsiaRegionalAnshanOnline2014 (DP问题)
2015-09-04 00:42
316 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5001
英文题目必备翻译:给一个无向图,某君一开始随机选择一个点,然后走d步,每步随机跳转到一个相邻结点,即使是走过的也可以,问d步走完后每个点没走过的概率是多少。
做这个题目我们必须事先明白一个事情,d步那就是没有走过的点的概率等于d步走到其他点的概率和;所以我们就可以枚举来计算走到其他点的概率和来计算没有走到点的概率;
运用DP状态转移解决问题。首先,枚举d步不走的点。然后枚举i-1步可能到达的点,更新各条边(枚举各条邻边)的走的概率,有点类似于广搜,一步一步来走。直接看代码吧。(这个题目很多人的博客都写错了,害的我还理解错了。。。orz...)
英文题目必备翻译:给一个无向图,某君一开始随机选择一个点,然后走d步,每步随机跳转到一个相邻结点,即使是走过的也可以,问d步走完后每个点没走过的概率是多少。
做这个题目我们必须事先明白一个事情,d步那就是没有走过的点的概率等于d步走到其他点的概率和;所以我们就可以枚举来计算走到其他点的概率和来计算没有走到点的概率;
运用DP状态转移解决问题。首先,枚举d步不走的点。然后枚举i-1步可能到达的点,更新各条边(枚举各条邻边)的走的概率,有点类似于广搜,一步一步来走。直接看代码吧。(这个题目很多人的博客都写错了,害的我还理解错了。。。orz...)
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<vector> using namespace std; const int N=10005; double dp [55]; void init(int n) { memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++) dp[0][i]=1.0/n; } int main() { int t,m,n,d,u,v; scanf("%d",&t); while(t--){ scanf("%d%d%d",&n,&m,&d); vector<int> g[55]; for(int i=0;i<m;i++){ scanf("%d%d",&u,&v); g[u].push_back(v); g[v].push_back(u); } for(int l=1;l<=n;l++){ // 枚举没有走到的点; init(n); // 对dp数组进行初始化; for(int i=1;i<=d;i++){ // 枚举步数; for(int j=1;j<=n;j++){ // 枚举i-1步可能到达的点; if(j==l) continue; // 不走这一点; int cnt=g[j].size(); double p=1.0/cnt; for(int k=0;k<cnt;k++){ // 枚举各边对应的邻边; if(g[j][k]==l) continue; // 这点出发的也不行; dp[i][g[j][k]]+=p*dp[i-1][j]; // dp[i][j]表示走了i步到j的概率; } } } double ans=0; for(int i=1;i<=n;i++){ ans+=dp[d][i]; // dp[i][j]表示走了i步到j的概率;所有的加起来,没有走到l的概率; } printf("%.10lf\n",ans); // ans就是d步不走到l的概率; } } return 0; }
相关文章推荐
- hdu2050 折线分割平面
- C++ 虚函数表解析
- CURLOPT_NOSIGNAL
- 常见漏洞第三方扫描器
- python 编码问题:'ascii' codec can't encode characters in position 的解决方案
- 【Unlock xcode files?】
- 如何迅速将磁盘中文件目录树结构做成文本保存
- 修改Eclipse jdk环境
- [CSS] Animating SVG
- debug签名 和 release签名
- Expression Tree Introduction
- Android 录音PCM 转G711U,非常简单,非FFMPEG
- [Search Engine] 搜索引擎技术之网络爬虫
- swift 学习<五> String
- 通过SQL语句直接实现Excel与数据库的导入导出
- hdu2049 不容易系列之(4)——考新郎
- 【POJ3020】【总数-最大二分匹配】【最小路径覆盖和点覆盖的区别是 路径的话要所有点覆盖了】
- 充满梦想的log4net探索之旅
- iOS 自定义Loading指示器
- Date和Calendar类的使用(一个例子)