分析

这是一道期望题,
设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. mysql中的dml操作_MySQL操作语言[DML]
  2. Echo Socket例子项目
  3. RequestToViewNameTranslator
  4. 北大计算机科学与技术专业河南录取分数线,北京大学河南录取分数线|2021北京大学河南分数线|2021年北京大学河南高考分数线|2021年北京大学河南招生计划录取人数...
  5. 网友写的验证码生成方案,可防止绝大多数机械识别。
  6. 利用ClustrMaps | GoStats | 51la | Google Analytics统计和分析访问量
  7. Mac OSX上安装Python的方法
  8. 深入Linux内核架构(中文版)pdf
  9. sqlite简单笔记
  10. arcengine开发中遇到的错误汇总
  11. android pdf 乱码怎么解决方案,pdf文件打开是乱码怎么办?pdf字体乱码的解决办法...
  12. VOIP Codec 三剑客之 ISAC/ILBC -- ISAC (5) LPC Parameter Encode 模块
  13. 什么是APS高级计划排程(生产计划排产)系统主要功能模块有哪些?
  14. android临时文件夹,【报Bug】安卓端,保存视频到相册成功,临时文件夹中有,但是相册中没有...
  15. Python爬虫入门第一课:如何解析网页
  16. 身份证最后一位出现“X”之原因
  17. Python云端开发基础
  18. osg的geographic和geodetic
  19. Lake Shore亥姆霍兹线圈
  20. 今日金融词汇---定向增发,是什么?

热门文章

  1. 在Matlab中配置libsvm
  2. 玩着游戏就把前端知识学了,贼爽!!!
  3. 老友记第二季5集背诵句
  4. sqli-labs ————less -27(union、SELECT、绕过滤)
  5. Union、Join语句
  6. 【产品】《用户体验要素》范围层(功能规格和内容需求)
  7. sap 反记账 ACDOCA表特殊点
  8. 人工智能如何助力建筑设计自动化?
  9. [翻译]windows下 连接到 bitnami的phpmyadmin
  10. 星际战甲结合扫描目标位置