2014
ACM/ICPC Asia Regional Anshan Online

给N个点,M条边组成的图,每一步能够从一个点走到相邻任一点,概率同样,问D步后没走到过每一个点的概率

概率DP  測试数据太水了。。。。10000*50*50*50都能过

加个vector优化到

#include "stdio.h"
#include "string.h"
#include "vector"
using namespace std; double dp[10][101][101];
double ans[101];
vector<int>map[101];
int cnt[101];
int main()
{
int n,m,d,Case,a,b,i,j,k,l;
scanf("%d",&Case);
while (Case--)
{
scanf("%d%d%d",&n,&m,&d);
memset(cnt,0,sizeof(cnt));
while (m--)
{
scanf("%d%d",&a,&b);
cnt[a]++;
cnt[b]++;
map[a].push_back(b);
map[b].push_back(a);
}
memset(dp,0,sizeof(dp)); for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
if (i!=j)
dp[0][i][j]+=1.0/n; // dp[d][i][j] 第d步,终点为i,中途不经过j的概率 for (i=1;i<=d;i++)
{
memset(dp[i%2],0,sizeof(dp[i%2]));
for (j=1;j<=n;j++)
for (k=0;k<map[j].size();k++)
for (l=1;l<=n;l++)
if (j!=l && j!=map[j][k])
dp[i%2][map[j][k]][l]+=dp[1-i%2][j][l]*1.0/cnt[j];
}
memset(ans,0,sizeof(ans));
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
if (i!=j)
ans[i]+=dp[d%2][j][i];
for (i=1;i<=n;i++)
{
printf("%.10lf\n",ans[i]);
map[i].clear();
}
}
return 0;
}

记忆化搜索: 每次去掉一个点,然后对剩下的点进行记忆化搜索

#include "stdio.h"
#include "string.h"
#include "vector"
using namespace std; int vis[101][10011],cnt[101];
double dp[101][10011];
int d;
vector<int>map[101];
double dfs(int a,int b,int c) //当前在a点,已经走了b步,不经过c点
{
int i;
double ans;
if (vis[a][b]) return dp[a][b];
vis[a][b]=1;
ans=0;
if (b>d) return dp[a][b]=1;
for (i=0;i<map[a].size();i++)
if (map[a][i]!=c)
ans+=1.0/cnt[a]*dfs(map[a][i],b+1,c);
return dp[a][b]=ans; } int main()
{
int Case,n,m,i,a,b;
scanf("%d",&Case);
while (Case--)
{
scanf("%d%d%d",&n,&m,&d);
memset(cnt,0,sizeof(cnt));
for (i=0;i<=n;i++)
map[i].clear();
while (m--)
{
scanf("%d%d",&a,&b);
cnt[a]++;
cnt[b]++;
map[a].push_back(b);
map[b].push_back(a);
}
memset(dp,0,sizeof(dp));
for (i=1;i<=n;i++)
map[0].push_back(i);
cnt[0]=n; for (i=1;i<=n;i++)
{
memset(vis,0,sizeof(vis));
printf("%.10lf\n",dfs(0,0,i));
}
}
return 0;
}

HDU 5001 概率DP || 记忆化搜索的更多相关文章

  1. 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 ...

  2. Codeforces 148D Bag of mice:概率dp 记忆化搜索

    题目链接:http://codeforces.com/problemset/problem/148/D 题意: 一个袋子中有w只白老鼠,b只黑老鼠. 公主和龙轮流从袋子里随机抓一只老鼠出来,不放回,公 ...

  3. CodeForces 398B 概率DP 记忆化搜索

    题目:http://codeforces.com/contest/398/problem/B 有点似曾相识的感觉,记忆中上次那个跟这个相似的 我是用了 暴力搜索过掉的,今天这个肯定不行了,dp方程想了 ...

  4. hdu3559 Frost Chain (概率dp+记忆化搜索)

    Problem Description In the unimaginable popular DotA game, the hero Lich has a wonderful skill: Fros ...

  5. 【bzoj5123】[Lydsy12月赛]线段树的匹配 树形dp+记忆化搜索

    题目描述 求一棵 $[1,n]$ 的线段树的最大匹配数目与方案数. $n\le 10^{18}$ 题解 树形dp+记忆化搜索 设 $f[l][r]$ 表示根节点为 $[l,r]$ 的线段树,匹配选择根 ...

  6. 【BZOJ】1415 [Noi2005]聪聪和可可 期望DP+记忆化搜索

    [题意]给定无向图,聪聪和可可各自位于一点,可可每单位时间随机向周围走一步或停留,聪聪每单位时间追两步(先走),问追到可可的期望时间.n<=1000. [算法]期望DP+记忆化搜索 [题解]首先 ...

  7. [题解](树形dp/记忆化搜索)luogu_P1040_加分二叉树

    树形dp/记忆化搜索 首先可以看出树形dp,因为第一个问题并不需要知道子树的样子, 然而第二个输出前序遍历,必须知道每个子树的根节点,需要在树形dp过程中记录,递归输出 那么如何求最大加分树——根据中 ...

  8. poj1664 dp记忆化搜索

    http://poj.org/problem?id=1664 Description 把M个相同的苹果放在N个相同的盘子里,同意有的盘子空着不放,问共同拥有多少种不同的分法?(用K表示)5.1.1和1 ...

  9. 状压DP+记忆化搜索 UVA 1252 Twenty Questions

    题目传送门 /* 题意:给出一系列的01字符串,问最少要问几个问题(列)能把它们区分出来 状态DP+记忆化搜索:dp[s1][s2]表示问题集合为s1.答案对错集合为s2时,还要问几次才能区分出来 若 ...

随机推荐

  1. groovy : poi 导出 Excel

    參考 poi-3.10-FINAL/docs/spreadsheet/quick-guide.html write_xls.groovy 代码例如以下 package xls; import java ...

  2. 【.NET进程通信】初探.NET中进程间通信的简单的实现

    转载请注明出处:http://blog.csdn.net/xiaoy_h/article/details/26090277 废话不多说,IPC就是进程间通信. 进程间通信能够採用的方法非常多,比方创建 ...

  3. ios说说自己的计划是什么样的发展论坛

    ios发展论坛在显示 iOS 5 在,主界面包含以下内置的应用程序: 信息.日历.照片.      YouTube.股市.地图(AGPS辅助的Google地图).天气.时间.计算机.备忘录.系统设置. ...

  4. 微服务API Gateway

    翻译-微服务API Gateway 原文地址:http://microservices.io/patterns/apigateway.html,以下是使用google翻译对原文的翻译. 让我们想象一下 ...

  5. dba_dependencies查询结果视图

    [oracle@rhel63single ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Fri Mar 13 0 ...

  6. MEF初体验之八:过滤目录

    当在使用子容器的时候,基于某些具体标准来过滤目录可能是重要的.例如,基于部件的创建策略来过滤是很常见的.下面的代码片段演示了如何构建这种特别方法: var catalog = new Assembly ...

  7. cocos2d-x3.0 解释具体的新的物理引擎setCategoryBitmask()、setContactTestBitmask()、setCollisionBitmask()

    转载请注明出处:游戏开发实验室http://blog.csdn.net/u010019717/article/details/32942641 我在编写游戏的时候遇到了这个问题.  物理引擎其它的内容 ...

  8. Youtube最佳Red5 官方视频下载指南,字幕【亲测成功】

    前言 最近在研究Red5 流媒体服务框架,官网上的信息足以让一个新手入门 有官方參考手冊 -- 高速了解red5的相关信息 有Red5 on Stackoverflow  -- 在上面能够提问或者回答 ...

  9. hdu4758 Walk Through Squares (AC自己主动机+DP)

    Walk Through Squares Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others ...

  10. Windows下一个SlikSVN使用

    我相信所有的应SVN不熟悉.使用过.可是并非人人都自己配置过SVNserver.以下就是我配置SVNserver的步骤.以及在配置过程中碰见的一些问题,在此记录,希望对你有所帮助. 安装 双击执行&q ...