正题

题目链接:https://www.luogu.com.cn/problem/CF605E


题目大意

给出nnn个点的一张完全有向图,每一天iii到jjj的路径有pi,jp_{i,j}pi,j​的概率出现。
询问从111出发走到nnn在最优策略下的期望天数。

1≤n≤103,pi,i=11\leq n\leq 10^3,p_{i,i}=11≤n≤103,pi,i​=1


解题思路

设gig_igi​表示从iii到nnn的答案,那么ggg满足式子
gi=∑j=1ngj∏gk<gj(1−pj,k)×pi,j×∏gk<gj(1−pi,k)g_i=\sum_{j=1}^{n}\frac{g_{j}}{\prod_{g_k<g_j}(1-p_{j,k})}\times p_{i,j}\times \prod_{g_k<g_j}(1-p_{i,k})gi​=j=1∑n​∏gk​<gj​​(1−pj,k​)gj​​×pi,j​×gk​<gj​∏​(1−pi,k​)
注意到里面有条件gk<gjg_k<g_jgk​<gj​,但是我们并不知道ggg,好像就死循环了。

但是我们可以知道gng_ngn​肯定是最小的而且是000,然后剩下第二小的只会受到gng_ngn​的影响,也就是这个里面有一个的ggg是完整的。

可以猜测这个第二小的肯定是剩下的ggg里面最小的那个,因为如果不是,那么显然不满足我们最小化的条件,从一个更大的走到了本应该可以更小的。

所以我们每次剩下的点中找到一个最小的gj∏gk<gj(1−pj,k)\frac{g_{j}}{\prod_{g_k<g_j}(1-p_{j,k})}∏gk​<gj​​(1−pj,k​)gj​​来更新它对其他点的影响即可。

时间复杂度O(n2)O(n^2)O(n2)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1100;
int n;bool v[N];
double p[N][N],prod[N],f[N];
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){scanf("%lf",&p[i][j]);p[i][j]/=100.0;}}if(n==1)return puts("0")&0;for(int i=1;i<n;i++)prod[i]=1-p[i][n],f[i]=1;v[n]=1;while(1){double low=1e9;int x;for(int i=1;i<=n;i++)if(f[i]/(1-prod[i])<low&&!v[i])low=f[i]/(1-prod[i]),x=i;if(x==1)return printf("%.10lf",low)&0;v[x]=1;for(int i=1;i<=n;i++){if(v[i])continue;f[i]+=low*p[i][x]*prod[i];prod[i]*=(1-p[i][x]);}}return 0;
}

CF605E-Intergalaxy Trips【期望dp】相关推荐

  1. luogu P4745 [CERC2017]Gambling Guide(期望DP + 最短路实现)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 P4745 [CERC2017]Gambling Guide(期望DP + 最短路实现) Weblin ...

  2. [SCOI2008]奖励关(期望dp)

    你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再吃). 宝 ...

  3. 【bzoj4318】OSU! 期望dp

    题目描述 osu 是一款群众喜闻乐见的休闲软件.  我们可以把osu的规则简化与改编成以下的样子:  一共有n次操作,每次操作只有成功与失败之分,成功对应1,失败对应0,n次操作对应为1个长度为n的0 ...

  4. 【loj6342】跳一跳 期望dp

    题目描述 一个人从 $1$ 开始向 $n$ 跳,在 $i$ 时会等概率跳到 $i,i+1,...,n$ 之一.求从 $1$ 跳到 $n$ 的期望步数. $n\le 10^7$ . 题解 期望dp傻逼题 ...

  5. 【高斯消元】兼 【期望dp】例题

    [总览] 高斯消元基本思想是将方程式的系数和常数化为矩阵,通过将矩阵通过行变换成为阶梯状(三角形),然后从小往上逐一求解. 如:$3X_1 + 2X_2 + 1X_3 = 3$ $           ...

  6. Luogu P3251 [JLOI2012]时间流逝 期望dp

    题面 题面 题解 期望\(dp\)好题! 今年\(ZJOI\)有讲过这题... 首先因为\(T\)只有\(50\),大力\(dfs\)后发现,可能的状态数最多只有\(20w\)左右,所以我们就可以大力 ...

  7. 【bzoj5197】[CERC2017]Gambling Guide 期望dp+堆优化Dijkstra

    题目描述 给定一张n个点,m条双向边的无向图. 你要从1号点走到n号点.当你位于x点时,你需要花1元钱,等概率随机地买到与x相邻的一个点的票,只有通过票才能走到其它点. 每当完成一次交易时,你可以选择 ...

  8. 【BZOJ】1076 [SCOI2008]奖励关 期望DP+状压DP

    [题意]n种宝物,k关游戏,每关游戏给出一种宝物,可捡可不捡.每种宝物有一个价值(有负数).每个宝物有前提宝物列表,必须在前面的关卡取得列表宝物才能捡起这个宝物,求期望收益.k<=100,n&l ...

  9. string (KMP+期望DP)

    Time Limit: 1000 ms   Memory Limit: 256 MB Description  给定一个由且仅由字符 'H' , 'T' 构成的字符串$S$. 给定一个最初为空的字符串 ...

  10. 概率期望题(期望 DP)做题记录

    概率期望题(期望 DP)做题记录 P3830 [SHOI2012]随机树 难点在于第二问:生成树的期望深度. 不 wei zhuo 捏,设 \(dp_{i,j}\) 表示已经有了 \(i\) 个叶子结 ...

最新文章

  1. v2视频服务器退出系统怎么启动,V2视频会议系统入门操作手册.doc
  2. ASP.NET中EVAL用法大全
  3. 【LeetCode从零单排】No70.ClimbingStairs
  4. influxdb和传统数据库相比
  5. ubuntu 编辑器中文乱码
  6. VHDL基本门电路和数值比较器的设计
  7. mysql 占用swap_查看swap占用情况
  8. 集成学习lgb库调参的粒子群方法
  9. 一张图看懂BGP邻居关系建立过程和BGP报文简介
  10. Flocks,Herds and Schools: A Distributed Behavioral Model
  11. Spring-core源码 -- AlternativeJdkIdGenerator Spring的UUID生成器类
  12. 支付系列-对接支付宝支付
  13. IE8.0的发展历程之一
  14. android wifi 5g,android 判断 wifi 是否是 5G
  15. 值得学习的C/C++开源项目
  16. 华为手机怎么隐藏按键图标_原来华为手机右上角隐藏扫描仪!纸质档一键电子化,真的涨知识了...
  17. Camera | 5.Linux v4l2架构(基于rk3568)
  18. 郑大计算机专业多少分,2020年,郑大各专业分数线公布,里面门道很多,给你们一一分析...
  19. 数据可视化第二版-拓展-和鲸网约车分析一等奖作品
  20. 凡是过往,皆为序章—写在2018年国基揭榜之时

热门文章

  1. java跨平台的特性_【简答题】什么是跨平台特性?Java怎样实现跨平台特性?
  2. promtail 配置详解_基于loki+promtail+grafana技术的日志集合
  3. k8s 查看ip地址属于哪个pod_Kubernetes Pod 如何获取 IP 地址
  4. android刷新时的圆形动画_Android自定义加载圈动画效果
  5. java的编译器怎么出来_怎样掌握ava编译器的使用,教程在这里,如何进行Java初级学习...
  6. 云付认证已通过可以支付吗_海科融通丨刷新支付日常问题【附交易操作步奏】...
  7. 7-43 字符串关键字的散列映射 (25 分)(思路+详解+不懂的兄弟们来呀)兄弟们我干了5个小时,一个一个测试点过的
  8. x12arima季节调整方法_《时间序列X-12-ARIMA季节调整:原理与方法》
  9. 蓝桥杯2017初赛-9数算式-dfs
  10. RocketMq重试及消息不丢失机制