分析

这是一道期望题,
设fi,j,0/1f_{i,j,0/1} 表示第i间教室,第j次申请,0是前一次没有提交申请,1是前一次提交了申请的最小期望。
转移比较简单,但是有一定麻烦。
因为v很小,
所以最短路可以用Floyd预先处理一下。

code(c++)

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string.h>
#include <cmath>
#include <math.h>
#define N 2003
using namespace std;
int n,m,v,e,x,y,z;
int d[2003],c[2003];
double f[2003][2003][2],dis[303][303],k[2003],ans;
int main()
{freopen("classroom.in","r",stdin);freopen("classrooms.out","w",stdout);scanf("%d%d%d%d",&n,&m,&v,&e);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",&k[i]);memset(dis,127,sizeof(dis));memset(f,127,sizeof(f));for(int i=1;i<=e;i++){scanf("%d%d%d",&x,&y,&z);if((x!=y)&&(dis[x][y]>z))dis[x][y]=dis[y][x]=z;}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(dis[i][k]+dis[k][j]<dis[i][j])dis[i][j]=dis[i][k]+dis[k][j];for(int i=0;i<=v;i++)dis[i][i]=dis[0][i]=0;f[0][0][0]=c[0]=d[0]=0;for(int i=0;i<=m;i++)f[0][i][0]=f[0][i][1]=0;for(int i=1;i<=n;i++)for(int j=0;j<=min(i,m);j++){ f[i][j][0]=f[i-1][j][0]+dis[c[i-1]][c[i]];if(j>=1){f[i][j][0]=min(f[i][j][0],f[i-1][j][1]+k[i-1]*dis[d[i-1]][c[i]]+(1-k[i-1])*dis[c[i-1]][c[i]]);f[i][j][1]=f[i-1][j-1][0]+k[i]*dis[c[i-1]][d[i]]+(1-k[i])*dis[c[i-1]][c[i]];if(j>=2)f[i][j][1]=min(f[i][j][1],f[i-1][j-1][1]+k[i-1]*k[i]*dis[d[i-1]][d[i]]+(1-k[i-1])*k[i]*dis[c[i-1]][d[i]]+k[i-1]*(1-k[i])*dis[d[i-1]][c[i]]+(1-k[i-1])*(1-k[i])*dis[c[i-1]][c[i]]);    }}ans=2147483647; for(int i=0;i<=m;i++){ans=min(ans,f[n][i][0]);ans=min(ans,f[n][i][1]);}printf("%.2lf",ans);
}

NOIP2016提高组Day1T3 换教室相关推荐

  1. 换教室(NOIP2016提高组Day1T3)

    [题目描述] 对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况中情合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第 i ( 1≤ i≤n)个时同段上, 两节内容相同 ...

  2. 【NOIP 2016 提高组】†换教室

    Description Solution 先用弗洛伊德求出两两点的最短路, 设DP: fi,j,0f_{i,j,0}表示当前走到了i这个点,申请了j次,在原点的期望距离, fi,j,1f_{i,j,1 ...

  3. P1850 [NOIP2016 提高组] 换教室

    P1850 [NOIP2016 提高组] 换教室 题意: 有2n个课安排在n个时间段上,每个时间段上都有两个一样的课同时在不同地方上,起初牛牛被所有课都被安排在Ci上课,另一节课在Di上课.牛牛现在想 ...

  4. [NOIP2016 提高组] 愤怒的小鸟

    [NOIP2016 提高组] 愤怒的小鸟 题意: 有n只猪,给出猪的坐标(xi,yi),问最少用几个形如 y=ax^2+bx 的曲线可以保证所有猪在曲线上,满足a<0,a,b为实数 n<= ...

  5. 【NOIP2016提高组】天天爱跑步

    题目背景 NOIP2016 提高组 Day1 T2 题目描述 小 C 同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是一个养成类游戏,需要玩家每 ...

  6. #185. [NOIP2016 提高组] 蚯蚓题解

    #185. [NOIP2016 提高组] 蚯蚓题解 题目描述 本题中,我们将用符号 ⌊c⌋\lfloor c \rfloor⌊c⌋ 表示对 ccc 向下取整,例如:⌊3.0⌋=⌊3.1⌋=⌊3.9⌋= ...

  7. NOIP2016 提高组 解题报告

    说明:由于我能力的限制,文章中的做法不一定是最优秀的算法,但官方数据全部测试通过,使用的全部知识全部是NOIP提高组的知识,请组织放心查看. 感谢 GoodQt 的指导与帮助 DAY1 T1 玩具谜题 ...

  8. 洛谷P1083 [NOIP2012提高组Day2T2]借教室

    P1083 借教室 题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借 ...

  9. 【jzoj4905】【NOIP2016提高组】【†换教室】【动态规划】【期望】

    题目大意 解题思路 先跑一次Floyd求出两点之间的距离,f[i][0,1]为第i个点申不申请到终点的期望,由于期望的线性性,和的期望等于期望和,所以可以很容易求出相邻两个点申不申请的期望,直接dp即 ...

最新文章

  1. 复杂基因组测序技术研究进展
  2. **Apache Options指令详解
  3. 铁轨问题 判断是否为出栈顺序
  4. C++11:forward及完美转发
  5. flashback table肯定会造成rowid跟着修改
  6. 系列文章----.Net程序员学用Oracle系列
  7. 前端学习(1867)vue之电商管理系统电商系统之登录退出实现表单的重置
  8. LeetCode之最大正方形
  9. 优化Angularjs的$watch方法
  10. vb连接mysql教程视频_VB 连接mysql数据库
  11. eoLinker-API_Shop_知识类API调用的代码示例合集:驾考题库、ISBN书号查询、万年历查询等...
  12. 三角形的几何公式大全_小学数学常用公式整理汇总(建议收藏)
  13. 为什么科技互联网公司越来越重视数学?
  14. 苹果Mac虚拟机 Parallels Desktop 17 安装 Win11 体验
  15. Mac M1芯片处理器能用的Bridge 2020/2019 for mac 解决M1版MAC安装BR无法安装问题 完美支持M1芯片处理器
  16. Python得到前面12个月的数据
  17. 6-6 Isleap (5 分)
  18. 易基因|Science:单细胞甲基化测序鉴定哺乳动物的新神经元亚型和调节元件
  19. ctf(EasySQL)
  20. 海康威视SDK登录失败,错误码为8

热门文章

  1. 史上最全的推广渠道(值得收藏)
  2. 一种实现PC端影音收录的方法 (4test)
  3. 希雷伺服源码原理图/PCB/BOM/技文档TMS320F28 希雷伺服,全套资料 , 主控芯片,TMS320F28034PNT,方案有显示,驱动
  4. 专门画像素图的软件_有哪些可以在手机上运行的像素画软件。?
  5. 机房收费系统——UML类图
  6. MAC使用GITHUB
  7. 基于javaweb,ssm鲜花销售系统
  8. crf++完成分词任务(人民日报)
  9. Windows上彻底卸载软件及清理残留数据的详细步骤
  10. 域名和IP地址什么关系?如何通过域名解析IP?