博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Where to Run LightOJ - 1287(概率dp)
阅读量:6531 次
发布时间:2019-06-24

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

(概率dp)


题面长长的,看了半天也没看懂题意

不清楚的地方,如何判断一个点是否是EJ
按照我的理解 在一个EJ点处,要么原地停留五分钟接着走,要么直接走,但是这样样例都对不上
mmp,原来是说,在原地停留五分钟后再继续这两种选择
而且题目问的是 求被警察抓的期望时间,实际上却是求遍历完整张图的期望时间,也就是说总是会走是EJ的点

对于每个点来说从该点出发的期望时间\(dp[i] = \frac{dp[i]+5}{cnt+1} + \frac{\sum(dp[j]+w[i][j])}{cnt+1} 其中j是所有下一个可达的EJ点,cnt表示可达的EJ点的个数\)

化简一下 $ dp[i] = \frac{5 + \sum(dp[j]+w[i][j])}{cnt}$
由于走的点不能重复,自然就是一个状压dp了,题目的点数n自然也就是\(n<=15\)

dp[u][s] 表示从u出发 已经遍历图的结点状态为s 遍历完整张图的期望时间

can[u][s] 表示从u出发 已经遍历图的结点状态为s 能否遍历完整张图

然后同时记忆化搜索就好了

#include
#define LL long longusing namespace std;const int N = 15;double dp[N][1<
< n;i++){ if(g[u][i] && i != u && !((1<
>T; while(T--){ scanf("%d%d",&n,&m); memset(g,0,sizeof(g)); for(int i = 0;i < m;i++){ int u, v, w; scanf("%d%d%d",&u,&v,&w); g[u][v] = g[v][u] = w; } printf("Case %d: ",cas++); memset(can,-1,sizeof(can)); dfs(0,1); printf("%.12f\n",dp[0][1]);}return 0;

}

转载于:https://www.cnblogs.com/jiachinzhao/p/7207018.html

你可能感兴趣的文章
linux中利用iptables+geoip过滤指定IP
查看>>
在myeclipse中写sql语句的细节问题
查看>>
使用ShellExecute打开目标文件所在文件夹并选中目标文件
查看>>
HDU 4614 Vases and Flowers (2013多校2 1004 线段树)
查看>>
Minix中的字符判定ctype.c
查看>>
91平台iOS接入demo
查看>>
五个优秀的硬盘检测工具
查看>>
用js实现table内容从下到上连续滚动
查看>>
基于ffmpeg的流媒体服务器
查看>>
项目积累——Blockingqueue,ConcurrentLinkedQueue,Executors
查看>>
JVM学习笔记(一)------基本结构
查看>>
活动目录之备份与恢复
查看>>
删除 Eclipse 的 configuration 目录
查看>>
MOXA的智能通信产品也大力支持WinCE.net了
查看>>
ActiveX开发知多少?
查看>>
你不得不知道的Visual Studio 2012(3)- 创建Windows应用程序
查看>>
Android操作系统2.0制作备份
查看>>
To XSS or not ? 杂谈
查看>>
TFTP服务器在Cisco设备上的应用(上传、下载IOS)
查看>>
获得文件和文件夹的所有权
查看>>