大意: 给定矩阵$p$, $p_{i,j}$表示每一秒点$i$到点$j$有一条边的概率, 每秒钟可以走一条边, 或者停留在原地, 求最优决策下从$1$到$n$的期望用时.

$f_x$为从$x$到$n$的期望用时, 每次肯定尽量选取$f$值小的后继走

假设每个点按$f$值排序后的序列为$a_1,a_2,...,x$, 有

$$f_x=1+f_1p_{x,a_1}+f_2p_{x,a_2}(1-p_{x,a_1})+...+f_xp_{x,x}\prod(1-p_{x,a_i})$$

$$f_x=\frac{1+\sum\limits_{i}f_{i}p_{x,i}\prod\limits_{j=1}^{i-1}(1-p_{x,a_j})}{1-\prod\limits_{i}(1-p_{x,a_i})}$$

$dijkstra$求出从$n$到$1$的最短路即可. $a_i$维护分子, $b_i$维护分母.

#include <iostream>
#include <algorithm>
#include <cstdio>
#define REP(i,a,n) for(int i=a;i<=n;++i)
using namespace std; const int N = 1e3+10;
int n,vis[N];
double a[N],b[N],p[N][N]; int main() {
scanf("%d", &n);
REP(i,1,n) REP(j,1,n) {
int t;
scanf("%d", &t);
p[i][j] = t/100.;
}
REP(i,1,n-1) a[i]=b[i]=1;
REP(i,1,n) {
double mi = 1e18;
int id = 0;
REP(j,1,n) if (!vis[j]&&b[j]<1) {
double f = a[j]/(1-b[j]);
if (mi>f) mi=f,id=j;
}
if (id==1) return printf("%.10lf\n",mi),0;
vis[id] = 1;
REP(j,1,n) if (!vis[j]) {
a[j]+=b[j]*p[j][id]*mi;
b[j]*=1-p[j][id];
}
}
}

最新文章

  1. 原创:微信小程序入口猜想?
  2. IOS开发-UIScrollView陷阱之----删除所有子view, 滚动条(indicator) 消失
  3. 【转】react 状态与属性区别
  4. Nginx中防盗链(下载防盗链和图片防盗链)操作记录
  5. 为 Github 创造 Integration
  6. js 所有事件列表
  7. Jquery 中 ajaxSubmit使用讲解(转)
  8. 重识JavaScript 之 JavaScript的组成
  9. sql server 2008 修改sa密码
  10. AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
  11. [状压dp]POJ1185 炮兵阵地
  12. Jmail的邮件发送
  13. sharepoint 2010 使用自定义列表模版创建列表(2)
  14. git学习四:eclipse使用git提交项目
  15. Linux(二)CentOS的安装
  16. 无法生成core dump文件的几个原因
  17. Microsoft Dynamics CRM 9.0 OP 版本 移动端
  18. 【Codeforces 3D】Least Cost Bracket Sequence
  19. Ex 6_20 最优二叉搜索树..._第六次作业
  20. Oracle 扩展表空间大小的几种方式

热门文章

  1. 深入理解JVM虚拟机7:JNDI,OSGI,Tomcat类加载器实现
  2. [ERR] 2006 - MySQL server has gone away如何解决
  3. sqlServer sa账号被锁定
  4. linux工程管理软件—make
  5. How can I get a Netty server to reload a TLS certificate when it is renewed?
  6. C#中 Dictionary&lt;&gt;的使用及注意事项
  7. 阶段5 3.微服务项目【学成在线】_day16 Spring Security Oauth2_12-SpringSecurityOauth2研究-JWT研究-生成私钥和公钥
  8. List根据多个字段分组
  9. python基础之:九步认识装饰器
  10. kubenetes创建一个pod应用