【CF605E】Intergalaxy Trips(贪心,动态规划)
【CF605E】Intergalaxy Trips(贪心,动态规划)
题面
Codeforces
洛谷
有\(n\)个点,每个时刻第\(i\)个点和第\(j\)个点之间有\(p_{ij}\)的概率存在一条边。每个时刻可以沿着一条边走或者留在原地。求从\(1\)号点走到\(n\)号点的最优的期望时间。
题解
设\(E(x)\)表示从\(x\)走到\(n\)的最短期望时间,那么考虑当前停的这个点的下一步应该怎么走,首先,你一定会走向当前能够到达的所有点中,\(E(x)\)最小的那个,而如果所有可以到达的点的\(E(x)\)都大于当前点的期望,那么一定会留在原地。
抓住这样一个性质:我们不会走向期望比当前点的期望更加大的点。那么我们从小往大依次考虑出所有点的期望。这样子每次拓展一个点的复杂度就是\(O(n)\)的,一共拓展\(n\)轮,所以总的复杂度就是\(O(n^2)\)。
转移大概是这样的,我们假装所有后继都是按照\(E(x)\)从小往大枚举的。
\(E(x)=\sum_{i}E(i)*p_{xi}\prod_{j=1}^{i-1}(1-p_{xj})\)
即考虑所有可以选择的后继,因为我们肯定当前出现的所有边中,期望最小的那个走,所以当前这条边被选定的概率就是前面所有边都没有被选中的概率乘上这条边出现了的概率。
那么,我们考虑每次选定的最小期望,显然不会用比他大的期望去更新他,既然它是当前最小,那么所有未确定的点的期望都不可能用来更新这个点,所以当前确定的就一定是这个点。
注意一点,如果你确定了一个点之后,当前得到的这个值并不是实际的期望,考虑用来更新的那些边都没有出现,这个的概率是\(\prod (1-p_{xj})\),那么这么多的概率你会停留在原地,把它减过去再除过来,即还要除掉一个\(1-\prod p\)才是最终的期望。
#include<iostream>
#include<cstdio>
using namespace std;
#define ll long long
#define MAX 1010
inline int read()
{
int x=0;bool t=false;char ch=getchar();
while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
if(ch=='-')t=true,ch=getchar();
while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
return t?-x:x;
}
int n,Q[MAX],h,t;
bool use[MAX],vis[MAX];
double E[MAX],p[MAX][MAX],prod[MAX];
int main()
{
n=read();
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
p[i][j]=read()/100.00;
if(n==1){puts("0");return 0;}
for(int i=1;i<=n;++i)E[i]=1,prod[i]=1-p[i][n];
E[n]=0;vis[n]=true;
for(int i=1;i<=n;++i)
{
int u=0;double mn=1e18;
for(int j=1;j<=n;++j)
if(!vis[j]&&E[j]/(1-prod[j])<mn)
u=j,mn=E[j]/(1-prod[j]);
vis[u]=true;if(u==1){printf("%.10lf\n",E[1]/(1-prod[1]));return 0;}
for(int j=1;j<=n;++j)
E[j]+=(E[u]/(1-prod[u]))*p[j][u]*prod[j],prod[j]*=(1-p[j][u]);
}
return 0;
}
【CF605E】Intergalaxy Trips(贪心,动态规划)的更多相关文章
- CF605E Intergalaxy Trips 贪心 概率期望
(当时写这篇题解的时候,,,不知道为什么,,,写的非常冗杂,,,不想改了...) 题意:一张有n个点的图,其中每天第i个点到第j个点的边都有$P_{i, j}$的概率开放,每天可以选择走一步或者留在原 ...
- CF605E Intergalaxy Trips
CF605E Intergalaxy Trips 考虑你是不知道后来的边的出现情况的,所以可以这样做:每天你都选择一些点进行观察,知道某天往这些点里面的某条边可用了,你就往这条边走.这样贪心总是对的. ...
- CF#335 Intergalaxy Trips
Intergalaxy Trips time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- 【51Nod】1510 最小化序列 贪心+动态规划
[题目]1510 最小化序列 [题意]给定长度为n的数组A和数字k,要求重排列数组从而最小化: \[ans=\sum_{i=1}^{n-k}|A_i-A_{i+k}|\] 输出最小的ans,\(n \ ...
- CodeForces 605 E. Intergalaxy Trips
E. Intergalaxy Trips time limit per test:2 seconds memory limit per test:256 megabytes input:standar ...
- nyoj 16-矩形嵌套(贪心 + 动态规划DP)
16-矩形嵌套 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:13 submit:28 题目描述: 有n个矩形,每个矩形可以用a,b来描述,表示长和 ...
- POJ1065 Wooden Sticks(贪心+动态规划——单调递减或递增序列)
描述 C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的时间,如果第i+1个木棒的重量和长度都大于等于 第i个处理的木棒,那么将不会耗费时间,否则 ...
- BZOJ 3227 [Sdoi2008]红黑树(tree) ——贪心 动态规划
首先可以想到一个贪心的方法,然后一层一层的合并. 也可以采用动态规划的方式,为了写起来好写,把点数*2+1,然后发现在本机上跑不过1500的数据. 交上去居然A掉了. 贪心 #include < ...
- HDOJ-1257(贪心/动态规划)
最少拦截系统 HDOJ-1257 我做这题的思路就是采用暴力或者贪心.也就是每次循环选出从第一个未被选择的元素开始,依次把后面可以选择的元素作为一个系统.最后统计可以有多少个系统. 还有人的思路就是利 ...
随机推荐
- 【本地服务器】用nginx进行反向代理处理(windows)
在通过json-server搭建本地服务器得到 http://localhost:3000/todos 的基础上,要想将接口改为www.test.com/todos这样的形式 ,则需要用nginx ...
- 20155203 杜可欣《网络对抗技术》Exp1 PC平台逆向破解
1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,ge ...
- HQL语句的3个小技巧
1.巧用new map 在查询表中部分字段的值时,我们可以用map来封装这些字段的值,可以提高查询效率,而且查出数据也更小,传输到页面的速度也更快. 如:查询角色时,我们只想要 id, ...
- spring配置多个事务管理器
<tx:annotation-driven/> <bean id="transactionManager1" class="org.springfram ...
- [Oracle]查看数据是否被移入 DataBuffer 的方法
查看数据是否被移入 DataBuffer 的方法: 例如:表名为 tabxxx, 用户为U2: SQL> grant dba to u2 identified by u2;SQL> con ...
- apache目录别名
#默认家目录DocumentRoot "/var/www/html"<Directory "/var/www"> AllowOverride Non ...
- 微信小程序之生命周期
1. 整个小程序生命周期 App({}) //app.js App({ onLaunch: function (options) { // 小程序初始化完成时(全局只触发一次) // 程序销毁(过一段 ...
- Flask学习-Wsgiref库
一.前言 前面在Flask学习-Flask基础之WSGI中提到了WerkZeug,我们知道,WerkZeug是一个支持WSGI协议的Server,其实还有很多其他支持WSGI协议的Server.htt ...
- http to https
https://www.cnblogs.com/powertoolsteam/p/http2https.html
- 使用顽灯浏览器执行H5游戏辅助挂机
前一篇<使用Fidder从安卓模拟器获取APP内H5游戏网址>我们获取到了APP内H5游戏的网址,那么接下来我们使用辅助工具做一些日常任务,如:每天晚上20点做副本,定时喊话,自动清理包裹 ...