BZOJ P4720[Noip2016]换教室____solution
题目太长不表
<--无形传送,最为致命
学习一点数学期望的基础,预处理最短路,然后加上DP即可。(废话)
理解决策和结果的差别:
在这里每阶段的决策有两个:申请|不申请
结果有两个:换|不换
然而二者不是一一对应的关系;
而且决策意味着状态,结果只用于计算期望
为什么呢
因为答案要的就是对于某种决策组的期望
于是状态的设计应该是分为申请|不申请,
然后计算期望时讨论申请成不成功;
状态:f[i,j,0/1]讨论前i节课,申请j次,第三维=[第i节申请了]
方程:
//f[i][j][0]=f[i-1][j][0]+dis(ci-1,ci)*ff[i-1][j][0]|f[i-1][j][1]+dis(ci-1,ci)*ff[i-1][j][1]+dis(di-1,ci)*ff[i-1][j][2]
//f[i][j][1]=f[i-1][j-1][0]+(dis(ci-1,di)*ki+dis[ci-1,ci]*(1-ki))*ff[i-1][j-1][0]|f[i-1][j-1][1]+(dis(ci-1,di)*ki+dis(ci-1,ci)*(1-ki))*ff[i-1][j-1][1]+(dis(di-1,di)*ki+dis(di-1,ci)*(1-ki))*ff[i-1][j-1][2]
|表示两者选一(当然是选小的)
ff表示与f(也就是期望)同步存在的概率
dis是最短路
剩下的如题
对了最短路记得判重边。
代码:
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
double f[][][];
double ff[][][];
int dis[][];
int c[],d[];
double ki[];
int n,m,v,e;
int main()
{
int i,j,k,l;
double min=;
memset(dis,0x3f3f3f,sizeof(dis));
scanf("%d%d%d%d",&n,&m,&v,&e);
for(i=;i<=n;i++)scanf("%d",&c[i]);
for(i=;i<=n;i++)scanf("%d",&d[i]);
for(i=;i<=n;i++)scanf("%lf",&ki[i]);
for(i=;i<=e;i++){
scanf("%d%d%d",&j,&k,&l);
if(l<dis[j][k])
dis[j][k]=dis[k][j]=l;
}
for(k=;k<=v;k++)
for(i=;i<=v;i++)
for(j=;j<=v;j++)
if(i!=j)
if (dis[i][j]>dis[i][k]+dis[k][j])
dis[i][j]=dis[i][k]+dis[k][j];
for(i=;i<=v;i++)dis[i][i]=;
for(i=;i<=n;i++)
for(j=;j<=m;j++)
f[i][j][]=f[i][j][]=,ff[i][j][]=ff[i][j][]=ff[i][j][]=;
ff[][][]=-ki[];ff[][][]=ki[];ff[][][]=;
f[][][]=;f[][][]=;
for(i=;i<=n;i++)
for(j=;j<=m;j++){
if(f[i-][j][]+dis[c[i-]][c[i]]*ff[i-][j][]<f[i-][j][]+dis[c[i-]][c[i]]*ff[i-][j][]+dis[d[i-]][c[i]]*ff[i-][j][])
f[i][j][]=f[i-][j][]+dis[c[i-]][c[i]]*ff[i-][j][],ff[i][j][]=ff[i-][j][];
else
f[i][j][]=f[i-][j][]+dis[c[i-]][c[i]]*ff[i-][j][]+dis[d[i-]][c[i]]*ff[i-][j][],ff[i][j][]=ff[i-][j][]+ff[i-][j][];
if(j>){
if(f[i-][j-][]+(dis[c[i-]][d[i]]*ki[i]+dis[c[i-]][c[i]]*(-ki[i]))*ff[i-][j-][]<f[i-][j-][]+(dis[c[i-]][d[i]]*ki[i]+dis[c[i-]][c[i]]*(-ki[i]))*ff[i-][j-][]+(dis[d[i-]][d[i]]*ki[i]+dis[d[i-]][c[i]]*(-ki[i]))*ff[i-][j-][])
f[i][j][]=f[i-][j-][]+(dis[c[i-]][d[i]]*ki[i]+dis[c[i-]][c[i]]*(-ki[i]))*ff[i-][j-][],ff[i][j][]=ff[i-][j-][]*(-ki[i]),ff[i][j][]=ff[i-][j-][]*ki[i];
else
f[i][j][]=f[i-][j-][]+(dis[c[i-]][d[i]]*ki[i]+dis[c[i-]][c[i]]*(-ki[i]))*ff[i-][j-][]+(dis[d[i-]][d[i]]*ki[i]+dis[d[i-]][c[i]]*(-ki[i]))*ff[i-][j-][],ff[i][j][]=(ff[i-][j-][]+ff[i-][j-][])*(-ki[i]),ff[i][j][]=(ff[i-][j-][]+ff[i-][j-][])*ki[i];
}
}
for(i=;i<=m;i++){
if(min>f[n][i][])min=f[n][i][];
if(min>f[n][i][])min=f[n][i][];
}
printf("%.2lf",min);
return ;
}
现在想来,我还真是弱啊
BZOJ P4720[Noip2016]换教室____solution的更多相关文章
- BZOJ 4720 [Noip2016]换教室
4720: [Noip2016]换教室 Description 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程.在可以选择的课程中,有2n节课程安排在n个时间段上.在第i( ...
- bzoj 4720: [Noip2016]换教室【期望dp】
状压dp,设f[i][j][0/1]为前i个时间段换了j间教室的期望体力消耗,转移很好想(但是写起来好长= =) #include<iostream> #include<cstdio ...
- 【BZOJ】4720: [Noip2016]换教室
4720: [Noip2016]换教室 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1690 Solved: 979[Submit][Status ...
- [NOIP2016]换教室 D1 T3 Floyed+期望DP
[NOIP2016]换教室 D1 T3 Description 对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况中情合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第 ...
- bzoj4720: [Noip2016]换教室(期望dp)
4720: [Noip2016]换教室 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1294 Solved: 698[Submit][Status ...
- [NOIP2016]换教室 题解(奇怪的三种状态)
2558. [NOIP2016]换教室 [题目描述] 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第i(1< ...
- NOIP2016换教室 BZOJ 4720
BZOJ 4720 换教室 题目描述: 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程.在可以选择的课程中,有2n节 课程安排在n个时间段上.在第i(1≤i≤n)个时间段上 ...
- 【bzoj4720】[NOIP2016]换教室
题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程.在可以选择的课程中,有2n节课程安排在n个时间段上.在第i(1≤i≤n)个时间段上,两节内容相同的课程同时在不同的 ...
- [NOIp2016] 换教室
题目类型:期望\(DP\) 传送门:>Here< 题意:现有\(N\)个时间段,每个时间段上一节课.如果不申请换教室,那么时间段\(i\)必须去教室\(c[i]\)上课,如果申请换课成功, ...
随机推荐
- Dubbo 自定义异常,你是怎么处理的?
前言 记录Dubbo对于自定义异常的处理方式. 实现目标 服务层异常,直接向上层抛出,web层统一捕获处理 如果是系统自定义异常,则返回{"code":xxx,"msg& ...
- Scala代码开发 metaTable(元表)
使用Scala语言开发时,自动生成get和set方法 不用写return进行返回, 因为它的最后一行就是返回值 先建立四个层(层层递进) domain 表结构的建立 repository(DAO) 实 ...
- Camera Sensor
camera sensor分为YUV sensor和Bayer sensor. YUV Sensor YUV Sensor输出的格式是YUV,图像的处理效果使用sensor内部的ISP,BB端接收到的 ...
- maven 打包 war 包含 WEB-INF/lib 目录
<plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactI ...
- 达人篇:6.3)试验设计DOE,Design of Experiments
本章目的:了解DOE,结构工程师为什么学习DOE. 1.前言:结构工程师为什么要学DOE 作者作为一名结构工程师,为什么要学习DOE. 很简单,在第四版FMEA手册中,DOE是重要的探测控制手段.如图 ...
- Angular Material 按钮图标系列
工做中经常用到Angular Material 中的好多按钮素材,奈何官网经常上不去,所以只能自己把这些常用的按钮扒下来了,留给自己同时也留给大家方便查看. Angular material mat- ...
- 牛客Wannafly挑战赛26E 蚂蚁开会(树链剖分+线段树)
传送门 题面描述 一颗n个节点的树,m次操作,有点权(该节点蚂蚁个数)和边权(相邻节点的距离). 三种操作: 操作1:1 i x将节点i的点权修改为x.(1 <= i <= n; 1 &l ...
- 【运维】centos7+confluence5.6.6破解
一.安装mysql数据库 centos7自带mariadb数据库,因为无法下载完整安装包,最终选择将其完全卸载,然后全新安装mysql数据库 1.卸载mariadb rpm -qa | grep ma ...
- ClouderManager集群在Linux里浏览器默认是英文,在Win里浏览器是中文,怎么更改?(图文详解)
不多说,直接上干货! 问题详情 在这里面如何英文改中文的吗? 莫非要把linux的语言环境给改了?? 我找找网页的语言字体怎么更改下 找到对应页面,修改成中文 解决办法 刷新下,即可 欢迎大家,加入我 ...
- Hadoop Gateway 部署
1.集群的 hadoop-current hive-current spark-current copy 到 gateway 机器 2.集群的 hadoop-conf hive-conf ...