大意: 给定矩阵$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=\…
(当时写这篇题解的时候,,,不知道为什么,,,写的非常冗杂,,,不想改了...) 题意:一张有n个点的图,其中每天第i个点到第j个点的边都有$P_{i, j}$的概率开放,每天可以选择走一步或者留在原地,求从1号点到n号点的最优期望值.题解: $f(x)$表示从$x$出发,走到$n$的最优期望时间.因为在一个点x时,如果要选择后继节点,肯定要选$f$值越小的越好,因此考虑贪心的选择后继状态.$a_{i}$表示$f(x)$第$i$小的x.考虑分层DP,依次确定$a_{i}$的值,并同时维护$f$值…
E. Intergalaxy Trips time limit per test:2 seconds memory limit per test:256 megabytes input:standard input output:standard output The scientists have recently discovered wormholes — objects in space that allow to travel very long distances between g…
[CF605E]Intergalaxy Trips(贪心,动态规划) 题面 Codeforces 洛谷 有\(n\)个点,每个时刻第\(i\)个点和第\(j\)个点之间有\(p_{ij}\)的概率存在一条边.每个时刻可以沿着一条边走或者留在原地.求从\(1\)号点走到\(n\)号点的最优的期望时间. 题解 设\(E(x)\)表示从\(x\)走到\(n\)的最短期望时间,那么考虑当前停的这个点的下一步应该怎么走,首先,你一定会走向当前能够到达的所有点中,\(E(x)\)最小的那个,而如果所有可以到…
CF605E Intergalaxy Trips 考虑你是不知道后来的边的出现情况的,所以可以这样做:每天你都选择一些点进行观察,知道某天往这些点里面的某条边可用了,你就往这条边走.这样贪心总是对的. 我们定义一个点的权值就是这个点到 $ n $ 的期望距离.同时它就是我们要算的答案. 但是注意到一个性质,我们总是从期望较大的点走向期望较小的点(显然的). 所以我们可以类似反过来的 dijkstra 的更新,维护当前权值的点,然后这个点当前的值就必然是最终这个点的答案.所以我们可以拿它去更新到达…
 Intergalaxy Trips time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output The scientists have recently discovered wormholes — objects in space that allow to travel very long distances between gal…
小C比较棘手的概率期望题,感觉以后这样的题还会贴几道出来. Description 给定一个n*n的邻接矩阵,邻接矩阵中元素pi,j表示的是从 i 到 j 这条单向道路在这一秒出现的概率百分比,走一条道路的时间需要1秒,问从1号点出发到n号点最短所需花费时间的期望.最短所需花费时间即在每一个点都按照最优决策移动. Input 第一行一个正整数n.接下来n行,每行n个整数,描述一个邻接矩阵. Output 输出一行一个小数,表示最短花费时间期望.你的答案和标准答案相差的绝对值不超过10^-6时,被…
题目链接:http://codeforces.com/problemset/problem/20/C 思路:需要用优化过的dijkstra,提供两种写法. #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <vector> #include <queue> #include <set> #define…
完全图,\(1 \leq n \leq 1000\)每一天边有 \(p_{i,j}=\frac{A_{i,j}}{100}\) 的概率出现,可以站在原地不动,求 \(1\) 号点到 \(n\) 号点期望天数. 注意 Windows 下 double 读入异常地慢,而自己 Linux 下读入巨快-- 首先,每个点肯定都会往期望更小的点走.如果目标点期望比自己大,还不如原地不动. 所以点构成了一个全序关系.显然对于每个点,它的决策是确定的. 所以当确定一个点的最小期望值时,需要确定一个排列 \(P\…
[题目链接] 点击打开链接 [算法] dijkstra [代码] #include<bits/stdc++.h> using namespace std; typedef long long ll; const ll INF = 1e15; const ll MAXN = 1e5; ll n,m,u,v,w,i,p,to,cost,x; ll dist[MAXN+],vis[MAXN+],last[MAXN+]; priority_queue< pair<ll,ll> >…