[NOIP2016提高组]换教室

题目:洛谷P1850、UOJ#262、BZOJ4720、Vijos P2005。

题目大意:有n个时间段,第i个时间段只能在教室$c_i$上课,另一个上这门课的教室在$d_i$。现在你最多可以进行m次申请,对于第i个时间段的申请如果成功,那么就能在$d_i$教室上课,但成功率为$p_i$。且教室与教室之间用e条双向道路连接,每条路有一个耗费体力的值。问申请哪几门课程可以使因在教室间移动耗费的体力值的总和的期望值最小。

解题思路:这是一道期望dp问题。对于每一时间段(第一时间段除外),我们可以分为这么几种情况。

①该时间段不申请:

1.上时间段申请 成功/失败

2.上时间段不申请

②该时间段申请:

1.该时间段申请 成功/失败 and 上时间段申请 成功/失败

2.上时间段不申请

设f[i][j][0], f[i][j][1]表示当前在第i个时间段,申请了j个教室,0表示申请不通过,1表示申请通过,最小耗费体力的期望值。

dis[i][j]表示教室i到教室j的最短路。

综合以上几点情况,可得以下状态转移方程:

$f(i,j,0)=min(f(i-1,j,0)+dis(c_{i-1},c_i),f(i-1,j,1)+dis(d_{i-1}+c_i)*p_{i-1}+dis(c_{i-1},c_i)*(1-p_{i-1}))$
$f(i,j,1)=min(f(i-1,j-1,0)+dis(c_{i-1},d_i)*p_i+dis(c_{i-1},c_i)*(1-p_i),f(i-1,j-1,1)+dis(d_{i-1},d_i)*p_{i-1}*p_i+dis(d_{i-1},c_i)*p_{i-1}*(1-p_i)+dis(c_{i-1},d_i)*(1-p_{i-1})*p_i+dis(c_{i-1},c_i)*(1-p_{i-1})*(1-p_i))$

dis用floyd求出,注意dis[i,i]=0

那么时间复杂度为$O(v^3+nm)$。空间复杂度为$O(v^2+nm)$,可以用滚动数组优化为$O(v^2+m)$。

C++ Code:

#include<cstdio>
#include<cstring>
using namespace std;
int n,m,v,e,c[2002],d[2002],dis[302][302];
double p[2002],f[2][2002][2];
template<typename T>
inline T min(T a,T b){return(a<b)?a:b;}
int main(){scanf("%d%d%d%d",&n,&m,&v,&e);memset(dis,0x3f,sizeof dis);for(int i=1;i<=n;++i)scanf("%d",&c[i]);for(int i=1;i<=n;++i)scanf("%d",&d[i]);for(int i=1;i<=n;++i)scanf("%lf",&p[i]);while(e--){int u,v,t;scanf("%d%d%d",&u,&v,&t);dis[u][v]=dis[v][u]=min(dis[u][v],t);}for(int i=1;i<=v;++i)dis[i][i]=0;for(int k=1;k<=v;++k)for(int i=1;i<=v;++i)if(i!=k)for(int j=1;j<=v;++j)if(i!=j&&j!=k)dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);memset(f,0x7f,sizeof f);f[1][0][0]=f[1][1][1]=0;for(int i=2;i<=n;++i){memset(f[i&1],0x7f,sizeof f[i&1]);f[i&1][0][0]=f[i&1^1][0][0]+dis[c[i-1]][c[i]];for(int j=1;j<=i&&j<=m;++j){f[i&1][j][0]=min(f[i&1^1][j][0]+dis[c[i-1]][c[i]],f[i&1^1][j][1]+dis[d[i-1]][c[i]]*p[i-1]+dis[c[i-1]][c[i]]*(1-p[i-1]));f[i&1][j][1]=min(f[i&1^1][j-1][0]+dis[c[i-1]][d[i]]*p[i]+dis[c[i-1]][c[i]]*(1-p[i]),f[i&1^1][j-1][1]+dis[d[i-1]][d[i]]*p[i-1]*p[i]+dis[d[i-1]][c[i]]*p[i-1]*(1-p[i])+dis[c[i-1]][d[i]]*(1-p[i-1])*p[i]+dis[c[i-1]][c[i]]*(1-p[i-1])*(1-p[i]));}}double ans=f[n&1][0][0];for(int i=1;i<=m;++i){ans=min(ans,f[n&1][i][0]);ans=min(ans,f[n&1][i][1]);}printf("%.2f\n",ans);return 0;
}

 

转载于:https://www.cnblogs.com/Mrsrz/p/7603447.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/369118.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从RSS Feed和YQL创建数据表

Yahoo Query Language&#xff08; YQL &#xff09;是一种查询语言&#xff0c;例如SQL。 使用YQL&#xff0c;我们可以跨Web服务 查询 &#xff0c; 过滤和联接数据。 YQL也可以阅读RSS feed。 响应可以是JSON或XML。 雅虎提供了一个YQL控制台&#xff0c;用于调试 &…

background-image使用svg如何改变颜色

结论 在我多番测试之后&#xff0c;才发现background-image使用svg&#xff0c;改变颜色根本做不了。 分析 当svg图片被使用成background-image&#xff0c;颜色的设置需要在svg内部才能生效。在外部CSS设置颜色样式&#xff0c;却是无效&#xff0c;这其实可以从CSS选择器得到…

NOIP 2012 Day2

tags: 扩展欧几里得二分答案查分倍增二分答案贪心NOIP categories:信息学竞赛总结同余方程借教室疫情控制 同余方程 Solution 首先同余式可以转化为等式.\[ax\equiv 1\mod b\Leftrightarrow axby1\]   根据扩展欧几里得定理, 对于式\[axbyk(a,b),k\in \mathbf{R}\]一定存在整…

Qt之QSS(Q_PROPERTY-自定义属性)

版权声明&#xff1a;进步始于交流&#xff0c;收获源于分享&#xff01;纯正开源之美&#xff0c;有趣、好玩、靠谱。。。作者&#xff1a;一去丶二三里 博客地址&#xff1a;http://blog.csdn.net/liang19890820 目录(?)[] 简述 在Qt之QSS&#xff08;Q_PROPERTY-原始属性&a…

python print error 空_python笔记37:10分钟掌握异常处理,再也不担心程序挂了

主要内容&#xff1a;小目标&#xff1a;异常处理主要内容&#xff1a;错误与异常&#xff0c;try_except语句对于撸代码的程序员来说&#xff0c;程序运行中出现问题是常见的现象&#xff1b;实际学习与工作中&#xff0c;我们会花很大的精力去解决各种问题&#xff1b;1. 程序…

在URL参数中传递复杂对象

假设您要传递原始数据类型&#xff0c;例如复杂的Java对象 java.util.Data&#xff0c;java.lang.List&#xff0c;泛型类&#xff0c;数组以及通过URL参数所需的所有内容&#xff0c;以便在页面加载后在任何网页上预设默认值。 共同的任务&#xff1f; 是的&#xff0c;但是可…

contenteditable元素的placeholder输入提示语设置

在某些情况下&#xff0c;textarea是不够用的&#xff0c;我们还需要显示一些图标或者高亮元素&#xff0c;这就需要用富文本编辑器&#xff0c;而富文本编辑器本质上是HTML元素设置了contenteditable。 然后可能需要像input、textarea有placeholder的输入提示语&#xff0c;但…

CF 961E Tufurama

JYZdalao上课讲了这道题&#xff0c;觉得很好可做 其实也是一道理解了就水爆了的题目 把题意抽象化&#xff0c;可以发现题目求的满足 i<ja[i]>ja[j]>i的i&#xff0c;j对数。由于i&#xff0c;j顺序问题&#xff0c;可以在不考虑i&#xff0c;j顺序的情况下将ans>…

使用JCA的密码术–提供者中的服务

Java密码体系结构&#xff08;JCA&#xff09;是一个可扩展的框架&#xff0c;使您能够使用执行加密操作。 JCA还促进实现独立性&#xff08;程序不应该在乎谁提供加密服务&#xff09;和实现互操作性&#xff08;程序不应该与特定加密服务的特定提供者联系在一起&#xff09;。…

IE浏览器支持响应式网站设计

目前响应式网站设计比较流行, 下面是摘自百度百科有关响应式设计的定义. 响应式网站设计是一种网络页面设计布局&#xff0c;其理念是&#xff1a;集中创建页面的图片排版大小&#xff0c;可以智能地根据用户行为以及使用的设备环境进行相对应的布局。 但是, 响应式设计并不能原…

python循环for不从零开始_Python-多处理-巨大的for循环

下午好&#xff0c;我对Python还是很陌生&#xff0c;我必须解决一个需要尝试数十亿个假设的问题...更具体地说&#xff0c;我需要迭代440个元素的列表&#xff0c;但我需要这样做8次...(是的&#xff0c;我知道OS迭代的次数完全是疯狂的。我的机器相当不错&#xff0c;所以我想…

Bridge Across Islands POJ - 3608 凸多边形间最小距离/旋转卡壳

旋转的部分始终感觉有点别扭。。后来发现是因为叉积顺序为负。。 所以让三角形面积逐渐变大实际上就是让三角形面积变小&#xff08;绝对值意义上的&#xff09;&#xff0c;这样就是让高变小了。。 至于为什么要选最下和最上。。应该是为了满足两条线始终可以生成所有多边形间…

绑定到JSON和XML –处理集合

EclipseLink JAXB&#xff08;MOXy&#xff09;的优势之一是能够通过一组元数据将对象模型映射到JSON和XML。 一个弱点是您需要在JSON键或XML元素上折衷集合属性。 我很高兴地说这个问题已经在EclipseLink 2.5&#xff08;和EclipseLink 2.4.2&#xff09;中得到解决&#xff0…

【WIP】Bootstrap 基础

创建: 2017/09/28 更新: 2017/10/14 标题加上【WIP】转载于:https://www.cnblogs.com/lancgg/p/8281714.html

xml mysql 模糊查询_mybatis+Spring mysql的模糊查询问题

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼查询的mapping.xml语法resultType"java.lang.Integer">SELECTcount(yy_id)FROMmc_usersystem_version like CONCAT(%,${system_version },% )比如当我为字段 system_version 赋值为 ”3512“ 的时候 能查询出来若是我…

css 浮动和清除浮动

在写页面布局的过程中&#xff0c;浮动是大家经常用的属性。在好多的排版布局中都是用的的浮动比如说下面这些地方都是应用到了浮动。 在我学习浮动的时候可是熬坏了脑筋&#xff0c;在这里我分享一下我对浮动这块知识的总结。 一、浮动的定义 使元素脱离文档流&#xff0c;按…

Java Code Geeks和Packt提供的Hadoop书籍赠品

亲爱的极客&#xff0c;由于参与度很高&#xff0c;并且为了有机会赢得尽可能多的Hadoop粉丝&#xff0c;我们决定将竞赛延长一个星期&#xff0c;直到下周二。 各位极客&#xff0c; 赠品在Java Code Geeks上继续。 我们很高兴地宣布&#xff0c;我们再次与Packt Publishin…

【转】 差分约束系统详解(转化为最短路) (概念)

---恢复内容开始--- 转自&#xff1a;http://www.cnblogs.com/void/archive/2011/08/26/2153928.html 差分约束系统中&#xff1a; 如果求未知数的最大值&#xff0c;那么按小于等于建图后求最短路即可。&#xff08;因为求最短路是由无穷向下约束而得到的&#xff0c;所以得到…

jq实现点击某元素之外触发事件

1 $(document).bind("click",function(e){ 2 var target $(e.target); 3 if(target.closest("#parentId").length 0){//点击id为parentId之外的地方触发 4 layer.close(tip_index); 5 type0; 6 } 7 }) …

mysql数据库连接时区设置_springboot 连接数据库之时区设置

抽空查看以前的开发日志&#xff0c;发现了一些“问题”日志&#xff0c;决定整理后陆陆续续发出来吧&#xff0c;也为有需要的话小伙伴提供点帮助。在springboot启动之时&#xff0c;报错了&#xff0c;一看应该就是连接MySql数据库时出的问题。create connection SQLExceptio…