LOJ_6178_景区路线规划

题意:

游乐园被描述成一张 n 个点,m 条边的无向图(无重边,无自环)。每个点代表一个娱乐项目,第 i 个娱乐项目需要耗费 ci​​ 分钟的时间,会让小 y 和妹子的开心度分别增加 h1ih1_ih1​i​​ , h2ih2_ih2​i​​ ,他们俩初始的开心度都是 000 。每条边代表一条路,第 iii 条边连接编号为 xix_ix​i​​ , yiy_iy​i​​ 的两个娱乐项目,从 xix_ix​i​​ 走到 yiy_iy​i​​ 或者从 yiy_iy​i​​ 走到 xix_ix​i​​ 耗费的时间都是 tit_it​i​​ 分钟。小 y 和妹子预计在游乐园里玩 kkk 分钟。最开始的时候,小 y 和妹子会等概率的随机选择一个娱乐项目开始玩,每玩完一个项目后,小 y 和妹子会等概率的随机选择一个可以从当前项目直达的且来得及玩的项目作为下一个项目。如果玩完一个项目后周围没有可以直达的且来得及玩的项目,小 y 和妹子就会提前结束游玩。 请你分别计算小 y 和妹子在游玩结束后开心度的期望。

分析:

我们来理解一下为什么期望反着推比较好
定义f[i][j]表示时间为i,位置为j,这个点花时间玩了,到游玩结束的期望。
如果我们定义f[i][j]表示时间为i,到j这个位置能获得的期望则会比较麻烦,
因为这么推需要求一遍每个时刻到每个点的概率。
而反着推到这个点的概率就是(1/这个点能到达的点的个数)。
f[i][j] = ∑(f[i+1][k]+val[k to j])/tot  (tot为j能到达的点的个数)
小y和妹子的期望分别计算
ans = ∑(f[T-c[i]][i])

代码:

#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define du double
#define M 20050
int head[110],to[M],nxt[M],val[M],cnt,n,m;
du f[110][500],g[110][500];
int h1[110],h2[110],T,c[110];
inline void add(int u,int v,int w){
to[++cnt]=v;nxt[cnt]=head[u];head[u]=cnt;val[cnt]=w;
}
int main(){
scanf("%d%d%d",&n,&m,&T);
for(int i=1;i<=n;i++){
scanf("%d%d%d",&c[i],&h1[i],&h2[i]);
}
int x,y,z;
for(int i=1;i<=m;i++){
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);add(y,x,z);
}
for(int i=0;i<=T;i++){
for(int j=1;j<=n;j++){
int tot=0;
for(int k=head[j];k;k=nxt[k]){
int t=to[k];
if(i-val[k]-c[t]>=0){
tot++;
f[j][i]+=f[t][i-val[k]-c[t]];
g[j][i]+=g[t][i-val[k]-c[t]];
}
}
if(tot)f[j][i]/=tot,g[j][i]/=tot;
f[j][i]+=h1[j],g[j][i]+=h2[j];
}
}
du ans1=0,ans2=0;
for(int i=1;i<=n;i++){
ans1+=f[i][T-c[i]];
ans2+=g[i][T-c[i]];
}
printf("%.5lf %.5lf",ans1/n,ans2/n);
}

LOJ_6178_景区路线规划的更多相关文章

  1. LiberOJ#6178. 「美团 CodeM 初赛 Round B」景区路线规划 概率DP

    题意 游乐园被描述成一张 n 个点,m 条边的无向图(无重边,无自环).每个点代表一个娱乐项目,第 i 个娱乐项目需要耗费 ci 分钟的时间,会让小 y 和妹子的开心度分别增加 h1i ,h2i ,他 ...

  2. 题解 [美团 CodeM 初赛 Round B]景区路线规划

    有个影响因素k,显然不能高斯消元 n和k都不大,可以直接\(O(nk)\)跑DP 然而带上时间这一影响因素后的转移颇为难写,我从6点直接调到9点最后还是只能dfs爆搜骗了55pts 考场上推方程一定要 ...

  3. Google地图路线规划

    Google地图路线规划: 需求:给定的两点之间Google地图路径规划和详情. 代码实现: //map定义省略 var directionsDisplay = new google.maps.Dir ...

  4. Android学习笔记之使用百度地图实现路线规划+公交信息检索

    PS:装了个deepin,感觉真的很高大上. 学习内容: 1.公交信息检索 2.路线规划   关于百度地图的开发也就这么多了.重要的部分也就那么些.原本打算搞到poi搜索就算了,不过看到了这两个方面还 ...

  5. Android百度地图开发05之公交信息检索 + 路线规划

    在上一篇blog中介绍过POI检索的使用,本篇blog主要介绍公交信息检索和线路规划的内容. 公交信息检索 实际上,公交信息检索与POI检索.在线建议检索非常相似,也是把你需要检索的信息发送给百度地图 ...

  6. 【高德地图API】从零开始学高德JS API(五)路线规划——驾车|公交|步行

    原文:[高德地图API]从零开始学高德JS API(五)路线规划——驾车|公交|步行 先来看两个问题:路线规划与导航有什么区别?步行导航与驾车导航有什么区别? 回答: 1.路线规划,指的是为用户提供3 ...

  7. 【Android】策略模式封装百度地图路线规划模块

    百度地图的Demo里有个路线规划的功能,但是,这个功能和Activity耦合性太高,所以需要单独抽离出路径规划功能,进行"解耦". 注:由于项目原因,本文只针对驾车路线规划进行封装 ...

  8. 【iOS】7.4 定位服务->3.2 地图框架MapKit 功能2:路线规划(导航)

    本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正. 本文相关目录: ================== 所属文集:[iOS]07 设备工具 === ...

  9. 其它综合-运维老鸟分享linux运维发展路线规划

    运维老鸟分享linux运维发展路线规划 linux 运维发展路线常见的就是下面两条路线: 第一条:运维应用-->系统架构-->运维开发-->系统开发 第二条:运维应用-->应用 ...

随机推荐

  1. Solr 新增、更新、删除索引

    solr-admin新增索引 [索引中无则新增,有则更新] 1.在doc标签和field标签中增加权重(boost),增加权重后,可以在搜索的时候做权重过滤. <add> <doc ...

  2. nifi1.6.0汉化

    1.1 测试机 l  Apache NiFi 1.6.0 l  HDP 2.6.3 l  集群规模:单节点 l  操作系统:CentOs7 l  以下所有操作均在root用户下执行 1.2 安装环境 ...

  3. IT轮子系列(七)——winform 版本更新组件

    前言 最近做了一个winform客户端的项目,里面有一个功能是版本更新.以前也有写过,可忘了具体的逻辑.网上也有介绍用发布模式进行更新的,自己尝试后没有成功,提示“vba证书无效”.于是,费了些时间搜 ...

  4. IT实用技术资源整理

    花了一下午整理出了常用的且比较实用的网站,以及一些收藏的资源,希望对大家有帮助! 常用技术资料 Python中文开发者社区 Python中文官方文档 开源中国社区 Python机器学习 jmeter插 ...

  5. eclipse工程当中的.classpath 和.project文件什么作用?

    .project是项目文件,项目的结构都在其中定义,比如lib的位置,src的位置,classes的位置.classpath的位置定义了你这个项目在编译时所使用的$CLASSPATH .classpa ...

  6. python---数据类型---列表

    #列表: name = ["lc","pxm","pt"] print('------------',name[2],"----- ...

  7. Visual Studio 2017 15.7 下的.NET Core

    Visual Studio 2017 15.7版本发布,对.NET Core项目的主要相关改变如下, 同时对Xamarin.Android和iOS项目的支持上也做了较大改进. 一. .NET Core ...

  8. EF CodeFirst 数据库初始化策略

    最近用EF做了几个小东西,了解简单使用后有了深入研究的兴趣,所以想系统的研究一下EF CodeFist的几个要点.下面简单列一下目录 1.1 目录 数据库初始化策略和数据迁移Migration的简单介 ...

  9. Java获取当日的起始时间,结束时间,现在时间,是否在时间段中。

    当日的起始时间 public static Date getTodayStartTime() { Calendar todayStart = Calendar.getInstance(); today ...

  10. 搭建centos7的开发环境1-系统安装及Python配置

    在公司开发部干活的好处是可以再分配一台高性能的PC,有了新的工作电脑,原来分配的笔记本电脑就可以安装linux系统做开发了,主要有两方面的开发计划,一个是计划中要参与爬虫系统的开发,第二个是大数据环境 ...