CF605E-Intergalaxy Trips【期望dp】
正题
题目链接:https://www.luogu.com.cn/problem/CF605E
题目大意
给出\(n\)个点的一张完全有向图,每一天\(i\)到\(j\)的路径有\(p_{i,j}\)的概率出现。
询问从\(1\)出发走到\(n\)在最优策略下的期望天数。
\(1\leq n\leq 10^3,p_{i,i}=1\)
解题思路
设\(g_i\)表示从\(i\)到\(n\)的答案,那么\(g\)满足式子
\]
注意到里面有条件\(g_k<g_j\),但是我们并不知道\(g\),好像就死循环了。
但是我们可以知道\(g_n\)肯定是最小的而且是\(0\),然后剩下第二小的只会受到\(g_n\)的影响,也就是这个里面有一个的\(g\)是完整的。
可以猜测这个第二小的肯定是剩下的\(g\)里面最小的那个,因为如果不是,那么显然不满足我们最小化的条件,从一个更大的走到了本应该可以更小的。
所以我们每次剩下的点中找到一个最小的\(\frac{g_{j}}{\prod_{g_k<g_j}(1-p_{j,k})}\)来更新它对其他点的影响即可。
时间复杂度\(O(n^2)\)
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】的更多相关文章
- CF605E Intergalaxy Trips
CF605E Intergalaxy Trips 考虑你是不知道后来的边的出现情况的,所以可以这样做:每天你都选择一些点进行观察,知道某天往这些点里面的某条边可用了,你就往这条边走.这样贪心总是对的. ...
- CF605E Intergalaxy Trips 贪心 概率期望
(当时写这篇题解的时候,,,不知道为什么,,,写的非常冗杂,,,不想改了...) 题意:一张有n个点的图,其中每天第i个点到第j个点的边都有$P_{i, j}$的概率开放,每天可以选择走一步或者留在原 ...
- 【CF605E】Intergalaxy Trips(贪心,动态规划)
[CF605E]Intergalaxy Trips(贪心,动态规划) 题面 Codeforces 洛谷 有\(n\)个点,每个时刻第\(i\)个点和第\(j\)个点之间有\(p_{ij}\)的概率存在 ...
- CF#335 Intergalaxy Trips
Intergalaxy Trips time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- CodeForces 605 E. Intergalaxy Trips
E. Intergalaxy Trips time limit per test:2 seconds memory limit per test:256 megabytes input:standar ...
- 【BZOJ-1419】Red is good 概率期望DP
1419: Red is good Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 660 Solved: 257[Submit][Status][Di ...
- [NOIP2016]换教室 D1 T3 Floyed+期望DP
[NOIP2016]换教室 D1 T3 Description 对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况中情合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第 ...
- HDU 4336 Card Collector (期望DP+状态压缩 或者 状态压缩+容斥)
题意:有N(1<=N<=20)张卡片,每包中含有这些卡片的概率,每包至多一张卡片,可能没有卡片.求需要买多少包才能拿到所以的N张卡片,求次数的期望. 析:期望DP,是很容易看出来的,然后由 ...
- 【BZOJ-4008】亚瑟王 概率与期望 + DP
4008: [HNOI2015]亚瑟王 Time Limit: 20 Sec Memory Limit: 512 MBSec Special JudgeSubmit: 832 Solved: 5 ...
- 期望dp BZOJ3450+BZOJ4318
BZOJ3450 概率期望DP f[i]表示到i的期望得分,g[i]表示到i的期望长度. 分三种情况转移: ① s[i]=‘x’:f[i]=f[i-1],g[i]=0 ② s[i]=‘o’:f[i]= ...
随机推荐
- Elastic_Search 和java的入门结合
1, pom 文件添加依赖... 2, config 配置文件 3, 写接口文件
- 使用TypeConverter类
3.2.2 使用TypeConverter类将XAML标签的Attribute与对象的Property进行映射注意本小节的例子对于初学者来说理解起来比较困难而且实用性不大,主要是为喜欢刨根问底的WPF ...
- MVVMLight学习笔记(三)---数据双向绑定
一.概述 本文与其说是MVVMLight框架的学习,不如说是温故一下数据的双向绑定. 二.Demo 建立好MVVMLight框架后的Wpf工程后,建立一个Model.Model.View以及ViewM ...
- 刷题-力扣-113. 路径总和 II
113. 路径总和 II 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/path-sum-ii 著作权归领扣网络所有.商业转载请联系 ...
- Spring笔记(2)
一.AOP简介 1.概念: 面向切面编程(Aspect-Oriented Programming),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善. ...
- Android系统编程入门系列之应用内键值对数据的简单保存
在应用程序间及与用户的通信交互过程中,会产生并传递一系列数据.针对这些数据,有部分是只在应用程序中使用的缓存数据,还有一部分是在不同位置多次或长时间使用的持久化数据. 对于缓存数据来说,通常以代码中定 ...
- Linux下sed找出IP中第四位
ip addr|sed -n '9p'|egrep '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'|sed -nr 's#^.*inet (.*) b ...
- 循环神经网络LSTM RNN回归:sin曲线预测
摘要:本篇文章将分享循环神经网络LSTM RNN如何实现回归预测. 本文分享自华为云社区<[Python人工智能] 十四.循环神经网络LSTM RNN回归案例之sin曲线预测 丨[百变AI秀]& ...
- Linux常用命令 - less命令详解
21篇测试必备的Linux常用命令,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1672457.html 查看文 ...
- tornado2.2安装教程
最近要用到vxworks 系统,所以避免不了要安装tornado 软件,进行相关的开发. 自己在安装过程中遇到了点点问题,这里记录下来,免得以后再次安装时遇到同样的问题. 1. 首先提供一个tor ...