NOIP2016Day1T3换教室(floyd+期望dp)
啊。。。这个时间写博客,明天还要上学,整个人都不好了。。。
这是我写的第一道期望题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)的更多相关文章
- 「NOIP2016」「P1850」 换教室(期望dp
题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 2n2n 节课程安排在 nn 个时间段上.在第 ii(1 \leq i \leq n1≤ ...
- bzoj 4720: [Noip2016]换教室【期望dp】
状压dp,设f[i][j][0/1]为前i个时间段换了j间教室的期望体力消耗,转移很好想(但是写起来好长= =) #include<iostream> #include<cstdio ...
- 【NOIP2016】Day1 T3 换教室(期望DP)
题目背景 NOIP2016 提高组 Day1 T3 题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 2n 节课程安排在 n 个时间段上. ...
- 洛谷P1850 换教室 [noip2016] 期望dp
正解:期望dp 解题报告: 哇我发现我期望这块真的布星,可能在刷了点儿NOIp之后会去搞一波期望dp的题...感觉连基础都没有打扎实?基础概念都布星! 好那先把这题理顺了嗷qwq 首先我们看到期望就会 ...
- 2018.08.30 bzoj4720: [Noip2016]换教室(期望dp)
传送门 一道无脑的期望dp. 用f[i][j][0/1]表示前i堂课提出了j次申请且第i堂课没有(有)提出申请. 这样就可以状态转移了. 然而这题状态转移方程有点长... (主要是情况多... 代码: ...
- NOIP 2016 换教室(期望dp)
第一次做期望dp 并不知道每个阶段的期望之和就是整个的期望之和 所以一直卡在这 期望=代价*概率 然后注意只有申请了才算期望,否则按原来的. 这道题和前几个课程,申请的限制,当前选或不选,有关 这样很 ...
- AcWing 233. 换教室 (期望DP+floyd)打卡
题目:https://www.acwing.com/problem/content/235/ 题意:有n个时间段,这个时间段有两个地方授课ci,di,最开始是在ci,可以申请去di,但是是几率的,然后 ...
- Luogu P1850换教室【期望dp】By cellur925
题目传送门 首先这个题我们一看它就是和概率期望有关,而大多数时候在OI中遇到他们时,都是与dp相关的. \(Vergil\)学长表示,作为\(NOIp2016\)的当事人,他们考前奶联赛一定不会考概率 ...
- 【Luogu】P1850换教室(期望DP)
题目链接 又一道面向题解编程的恶心神题.真是叫人质壁分离…… 设f[i][j][k]表示考虑了前i节课,尝试了j次,当前申请结果为k时消耗的体力值. 对于f[i][j][0]有两种情况:一是我们的主角 ...
随机推荐
- Selenium WebDriver(Python)API
1.通过示例介绍Selenium-WebDriver 一个简单的入门方法就是这个例子,它在Google上搜索术语“Cheese”,然后将结果页面的标题输出到控制台. java csharp pytho ...
- egrep及扩展正则
模式:pattern 正则: grep:基本正则,查找速度慢 Extended grep:扩展正则 fgrep:fast grep,不支持正则,直接查找字符串,执行速度快 基本正则: . :任意单个字 ...
- C 关键字 标示符 注释
一 关键字 1. 什么是关键字 关键字就是C语言提供的有特殊含义的符号 也叫做"保留字" C语言一共提供了32个关键字 这些关键字都被C语言赋予了特殊含义 auto double ...
- 新的征程 in ZJU
争取考上了心仪的学校 并进入了心仪的实验室 但是对我来说,未来将是更多的挑战 首先我觉得我学习能力还是不足,无法做到一天的高效率学习 实验室的方向是可视化,我觉得这个是个非常复杂的方向 数学,pyth ...
- ORACLE高级部分内容
1.pl/sql基本语句 DECLARE BEGIN END; / 循环语句 DECLARE I NUMBER(2):=1; BEGIN WHILE I<100 LOOP I:=I+1; EN ...
- python常用命令—ipython3环境下获取某个文件夹下的文件列表
import os os.listdir('文件夹路径')
- Python3获取新浪微博内容乱码问题
用python获取新浪微博最近发布内容的时候调用 public_timeline()函数的返回值是个jsonDict对象,首先需要将该对象通过json.dumps函数转换成字符串,然后对该字符串用GB ...
- mysql下分组取关联表指定提示方法,类似于mssql中的cross apply
转至:https://stackoverflow.com/questions/12113699/get-top-n-records-for-each-group-of-grouped-results ...
- 软件工程-东北师大站-第二次作业psp
1.本周PSP 2.本周进度条 3.本周累计进度图 代码累计折线图 博文字数累计折线图 本周PSP饼状图
- spring学习(一)——控制反转简单例子
spring框架是一个开源的轻量级的基于IOC与AOP核心技术的容器框架,主要是解决企业的复杂操作实现. 那IOC与AOP,到底如何解释呢,在看spring视频中,两个专业术语一定必须要懂得. IOC ...