NOIP2016提高组Day1T3 换教室
分析
这是一道期望题,
设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 换教室相关推荐
- 换教室(NOIP2016提高组Day1T3)
[题目描述] 对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况中情合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第 i ( 1≤ i≤n)个时同段上, 两节内容相同 ...
- 【NOIP 2016 提高组】换教室
Description Solution 先用弗洛伊德求出两两点的最短路, 设DP: fi,j,0f_{i,j,0}表示当前走到了i这个点,申请了j次,在原点的期望距离, fi,j,1f_{i,j,1 ...
- P1850 [NOIP2016 提高组] 换教室
P1850 [NOIP2016 提高组] 换教室 题意: 有2n个课安排在n个时间段上,每个时间段上都有两个一样的课同时在不同地方上,起初牛牛被所有课都被安排在Ci上课,另一节课在Di上课.牛牛现在想 ...
- [NOIP2016 提高组] 愤怒的小鸟
[NOIP2016 提高组] 愤怒的小鸟 题意: 有n只猪,给出猪的坐标(xi,yi),问最少用几个形如 y=ax^2+bx 的曲线可以保证所有猪在曲线上,满足a<0,a,b为实数 n<= ...
- 【NOIP2016提高组】天天爱跑步
题目背景 NOIP2016 提高组 Day1 T2 题目描述 小 C 同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是一个养成类游戏,需要玩家每 ...
- #185. [NOIP2016 提高组] 蚯蚓题解
#185. [NOIP2016 提高组] 蚯蚓题解 题目描述 本题中,我们将用符号 ⌊c⌋\lfloor c \rfloor⌊c⌋ 表示对 ccc 向下取整,例如:⌊3.0⌋=⌊3.1⌋=⌊3.9⌋= ...
- NOIP2016 提高组 解题报告
说明:由于我能力的限制,文章中的做法不一定是最优秀的算法,但官方数据全部测试通过,使用的全部知识全部是NOIP提高组的知识,请组织放心查看. 感谢 GoodQt 的指导与帮助 DAY1 T1 玩具谜题 ...
- 洛谷P1083 [NOIP2012提高组Day2T2]借教室
P1083 借教室 题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借 ...
- 【jzoj4905】【NOIP2016提高组】【换教室】【动态规划】【期望】
题目大意 解题思路 先跑一次Floyd求出两点之间的距离,f[i][0,1]为第i个点申不申请到终点的期望,由于期望的线性性,和的期望等于期望和,所以可以很容易求出相邻两个点申不申请的期望,直接dp即 ...
最新文章
- mysql中的dml操作_MySQL操作语言[DML]
- Echo Socket例子项目
- RequestToViewNameTranslator
- 北大计算机科学与技术专业河南录取分数线,北京大学河南录取分数线|2021北京大学河南分数线|2021年北京大学河南高考分数线|2021年北京大学河南招生计划录取人数...
- 网友写的验证码生成方案,可防止绝大多数机械识别。
- 利用ClustrMaps | GoStats | 51la | Google Analytics统计和分析访问量
- Mac OSX上安装Python的方法
- 深入Linux内核架构(中文版)pdf
- sqlite简单笔记
- arcengine开发中遇到的错误汇总
- android pdf 乱码怎么解决方案,pdf文件打开是乱码怎么办?pdf字体乱码的解决办法...
- VOIP Codec 三剑客之 ISAC/ILBC -- ISAC (5) LPC Parameter Encode 模块
- 什么是APS高级计划排程(生产计划排产)系统主要功能模块有哪些?
- android临时文件夹,【报Bug】安卓端,保存视频到相册成功,临时文件夹中有,但是相册中没有...
- Python爬虫入门第一课:如何解析网页
- 身份证最后一位出现“X”之原因
- Python云端开发基础
- osg的geographic和geodetic
- Lake Shore亥姆霍兹线圈
- 今日金融词汇---定向增发,是什么?