啊。。。这个时间写博客,明天还要上学,整个人都不好了。。。

  这是我写的第一道期望题hiahiahia。。。

  题目大意就不说了QWQ

  80分儿做法:先floyd,爆搜枚举哪些点取,求出答案,效率O(C(n,m)*n)。

  100分:先floyd跑出两两点之间的距离,然后f[i][j][0/1]表示第i个时间,申请了j次换教室,0表示这个时间不申请,1表示这个时间申请,则有:

  f[i+1][j][0]=min(f[i][j][0]+dis[a[i]][a[i+1]],f[i][j][1]+dis[b[i]][a[i+1]]*pro[i]+dis[a[i]][a[i+1]]*(1-pro[i]));

  f[i+1][j+1][1]=min(f[i][j][1]+dis[a[i]][a[i+1]]*(1-pro[i])*(1-pro[i+1])+dis[b[i]][a[i+1]]*pro[i]*(1-pro[i+1])

            +dis[a[i]][b[i+1]]*(1-pro[i])*pro[i+1]+dis[b[i]][b[i+1]]*pro[i]*pro[i+1],

            f[i][j][0]+dis[a[i]][a[i+1]]*(1-pro[i+1])+dis[a[i]][b[i+1]]*pro[i+1]);

  一开始freopen没删掉WA了好几次心态都崩了>_<

代码如下:

#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
using namespace std;
int a[],b[],dis[][],n,m,v,e,x,y,z;
double pro[],f[][][],ans;
int main()
{
scanf("%d %d %d %d",&n,&m,&v,&e);
for(int i=;i<=n;i++)scanf("%d",&a[i]);
for(int i=;i<=n;i++)scanf("%d",&b[i]);
for(int i=;i<=n;i++)scanf("%lf",&pro[i]);
for(int i=;i<=v;i++)for(int j=;j<=v;j++)if(i!=j)dis[i][j]=;
for(int i=;i<=e;i++)scanf("%d%d%d",&x,&y,&z),dis[y][x]=dis[x][y]=min(dis[x][y],z);
for(int k=;k<=v;k++)for(int i=;i<=v;i++)for(int j=;j<=v;j++)dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
for(int i=;i<=n;i++)for(int j=;j<=min(i,m);j++)f[i][j][]=f[i][j][]=23333333333.0;
f[][][]=;
for(int i=;i<n;i++)for(int j=;j<=min(i,m);j++)
{
f[i+][j][]=min(f[i][j][]+dis[a[i]][a[i+]],f[i][j][]+dis[b[i]][a[i+]]*pro[i]+dis[a[i]][a[i+]]*(-pro[i]));
if(j==m)continue;
f[i+][j+][]=f[i][j][]+dis[a[i]][a[i+]]*(-pro[i])*(-pro[i+])+dis[b[i]][a[i+]]*pro[i]*(-pro[i+]);
f[i+][j+][]+=dis[a[i]][b[i+]]*(-pro[i])*pro[i+]+dis[b[i]][b[i+]]*pro[i]*pro[i+];
f[i+][j+][]=min(f[i+][j+][],f[i][j][]+dis[a[i]][a[i+]]*(-pro[i+])+dis[a[i]][b[i+]]*pro[i+]);
}
ans=23333333333.0;
for(int i=;i<=m;i++)
ans=min(ans,min(f[n][i][],f[n][i][]));
printf("%.2lf\n",ans);
}

NOIP2016Day1T3换教室(floyd+期望dp)的更多相关文章

  1. 「NOIP2016」「P1850」 换教室(期望dp

    题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 2n2n 节课程安排在 nn 个时间段上.在第 ii(1 \leq i \leq n1≤ ...

  2. bzoj 4720: [Noip2016]换教室【期望dp】

    状压dp,设f[i][j][0/1]为前i个时间段换了j间教室的期望体力消耗,转移很好想(但是写起来好长= =) #include<iostream> #include<cstdio ...

  3. 【NOIP2016】Day1 T3 换教室(期望DP)

    题目背景 NOIP2016 提高组 Day1 T3 题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 2n 节课程安排在 n 个时间段上. ...

  4. 洛谷P1850 换教室 [noip2016] 期望dp

    正解:期望dp 解题报告: 哇我发现我期望这块真的布星,可能在刷了点儿NOIp之后会去搞一波期望dp的题...感觉连基础都没有打扎实?基础概念都布星! 好那先把这题理顺了嗷qwq 首先我们看到期望就会 ...

  5. 2018.08.30 bzoj4720: [Noip2016]换教室(期望dp)

    传送门 一道无脑的期望dp. 用f[i][j][0/1]表示前i堂课提出了j次申请且第i堂课没有(有)提出申请. 这样就可以状态转移了. 然而这题状态转移方程有点长... (主要是情况多... 代码: ...

  6. NOIP 2016 换教室(期望dp)

    第一次做期望dp 并不知道每个阶段的期望之和就是整个的期望之和 所以一直卡在这 期望=代价*概率 然后注意只有申请了才算期望,否则按原来的. 这道题和前几个课程,申请的限制,当前选或不选,有关 这样很 ...

  7. AcWing 233. 换教室 (期望DP+floyd)打卡

    题目:https://www.acwing.com/problem/content/235/ 题意:有n个时间段,这个时间段有两个地方授课ci,di,最开始是在ci,可以申请去di,但是是几率的,然后 ...

  8. Luogu P1850换教室【期望dp】By cellur925

    题目传送门 首先这个题我们一看它就是和概率期望有关,而大多数时候在OI中遇到他们时,都是与dp相关的. \(Vergil\)学长表示,作为\(NOIp2016\)的当事人,他们考前奶联赛一定不会考概率 ...

  9. 【Luogu】P1850换教室(期望DP)

    题目链接 又一道面向题解编程的恶心神题.真是叫人质壁分离…… 设f[i][j][k]表示考虑了前i节课,尝试了j次,当前申请结果为k时消耗的体力值. 对于f[i][j][0]有两种情况:一是我们的主角 ...

随机推荐

  1. Selenium WebDriver(Python)API

    1.通过示例介绍Selenium-WebDriver 一个简单的入门方法就是这个例子,它在Google上搜索术语“Cheese”,然后将结果页面的标题输出到控制台. java csharp pytho ...

  2. egrep及扩展正则

    模式:pattern 正则: grep:基本正则,查找速度慢 Extended grep:扩展正则 fgrep:fast grep,不支持正则,直接查找字符串,执行速度快 基本正则: . :任意单个字 ...

  3. C 关键字 标示符 注释

    一 关键字 1. 什么是关键字 关键字就是C语言提供的有特殊含义的符号 也叫做"保留字" C语言一共提供了32个关键字 这些关键字都被C语言赋予了特殊含义 auto double ...

  4. 新的征程 in ZJU

    争取考上了心仪的学校 并进入了心仪的实验室 但是对我来说,未来将是更多的挑战 首先我觉得我学习能力还是不足,无法做到一天的高效率学习 实验室的方向是可视化,我觉得这个是个非常复杂的方向 数学,pyth ...

  5. ORACLE高级部分内容

    1.pl/sql基本语句 DECLARE BEGIN END; / 循环语句 DECLARE I  NUMBER(2):=1; BEGIN WHILE I<100 LOOP I:=I+1; EN ...

  6. python常用命令—ipython3环境下获取某个文件夹下的文件列表

    import os os.listdir('文件夹路径')

  7. Python3获取新浪微博内容乱码问题

    用python获取新浪微博最近发布内容的时候调用 public_timeline()函数的返回值是个jsonDict对象,首先需要将该对象通过json.dumps函数转换成字符串,然后对该字符串用GB ...

  8. mysql下分组取关联表指定提示方法,类似于mssql中的cross apply

    转至:https://stackoverflow.com/questions/12113699/get-top-n-records-for-each-group-of-grouped-results ...

  9. 软件工程-东北师大站-第二次作业psp

    1.本周PSP 2.本周进度条 3.本周累计进度图 代码累计折线图 博文字数累计折线图 本周PSP饼状图

  10. spring学习(一)——控制反转简单例子

    spring框架是一个开源的轻量级的基于IOC与AOP核心技术的容器框架,主要是解决企业的复杂操作实现. 那IOC与AOP,到底如何解释呢,在看spring视频中,两个专业术语一定必须要懂得. IOC ...