【洛谷P1850】换教室[2016NOIP提高组]
期望DP
状态:
f[i][j][0/1]表示前i节课 提交j个申请 第i个教室不申请/申请(为了确定当前教室,方便转移) 的最小期望
方程:
f[i][j][0]=min(f[i-1][j][0]+dis[cla[i-1]][cla[i]],f[i-1][j][1]+dis[ano[i-1]][cla[i]]*k[i-1]+dis[cla[i-1]][cla[i]]*(1-k[i-1]));
f[i][j][1]=min(f[i-1][j-1][0]+dis[cla[i-1]][ano[i]]*k[i]+dis[cla[i-1]][cla[i]]*(1-k[i]),f[i-1][j-1][1]+(dis[ano[i-1]][ano[i]]*k[i]+dis[ano[i-1]][cla[i]]*(1-k[i]))*k[i-1]+(dis[cla[i-1]][ano[i]]*k[i]+dis[cla[i-1]][cla[i]]*(1-k[i]))*(1-k[i-1]));
边界:
f[1][0][0]=f[1][1][1]=0;
代码:
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define MAXN 2010
#define MAXV 310
#define re register
int n,m,v,e,cla[MAXN],ano[MAXN],dis[MAXV][MAXV];
inline double min(double x,double y) { return x<y?x:y; }
double k[MAXN],f[MAXN][MAXN][],ans=1e30;
int main()
{
scanf("%d%d%d%d",&n,&m,&v,&e);
for(re int i=;i<=n;i++)
scanf("%d",&cla[i]);
for(re int i=;i<=n;i++)
scanf("%d",&ano[i]);
for(re int i=;i<=n;i++)
scanf("%lf",&k[i]);
memset(dis,,sizeof(dis));
int x,y,w;
for(int i=;i<=v;i++)
dis[i][i]=;
for(int i=;i<=e;i++)
{
scanf("%d%d%d",&x,&y,&w);
if(dis[x][y]>w) dis[x][y]=dis[y][x]=w;
}
for(int kk=;kk<=v;kk++)
for(int i=;i<=v;i++)
for(int j=;j<=v;j++)
if(dis[i][j]>dis[i][kk]+dis[kk][j])
dis[i][j]=dis[i][kk]+dis[kk][j];
memset(f,,sizeof(f));
f[][][]=f[][][]=;
for(int i=;i<=n;i++)
for(int j=,d=i<m?i:m;j<=d;j++){
f[i][j][]=min(f[i-][j][]+dis[cla[i-]][cla[i]],f[i-][j][]+dis[ano[i-]][cla[i]]*k[i-]+dis[cla[i-]][cla[i]]*(-k[i-]));
if(j) f[i][j][]=min(f[i-][j-][]+dis[cla[i-]][ano[i]]*k[i]+dis[cla[i-]][cla[i]]*(-k[i]),f[i-][j-][]+(dis[ano[i-]][ano[i]]*k[i]+dis[ano[i-]][cla[i]]*(-k[i]))*k[i-]+(dis[cla[i-]][ano[i]]*k[i]+dis[cla[i-]][cla[i]]*(-k[i]))*(-k[i-]));
}
for(int i=;i<=m;i++)
ans=min(ans,min(f[n][i][],f[n][i][]));
printf("%.2lf\n",ans);
return ;
}
【洛谷P1850】换教室[2016NOIP提高组]的更多相关文章
- 洛谷 P1850 换教室 解题报告
P1850 换教室 题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有\(2n\)节课程安排在\(n\)个时间段上.在第\(i(1≤i≤n) ...
- 洛谷——P1850 换教室
P1850 换教室 有 2n 节课程安排在 nn 个时间段上.在第 i个时间段上,两节内容相同的课程同时在不同的地点进行,其中,牛牛预先被安排在教室 $c_i$ 上课,而另一节课程在教室 $d_i$ ...
- 洛谷 P1850 换教室
P1850 换教室 题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 2n2n 节课程安排在 nn 个时间段上.在第 ii(1 \leq ...
- 洛谷P1850换教室
题目传送门 理解题意:给定你一个学期的课程和教室数量以及教室之间的距离还有换教室成功的概率,求一个学期走的距离的期望最小值 题目是有够恶心的,属于那种一看就让人不想刷的题目...很明显的动规,但是那个 ...
- 洛谷P1850 换教室
令人印象深刻的状态转移方程... f[i][j][0/1]表示前i个换j次,第i次是否申请时的期望. 注意可能有重边,自环. 转移要分类讨论,距离是上/这次成功/失败的概率乘相应的路程. 从上次的0/ ...
- 洛谷P1850 换教室(概率dp)
传送门 我的floyd竟然写错了?今年NOIP怕不是要爆零了? 这就是一个概率dp 我们用$dp[i][j][k]$表示在第$i$个时间段,已经申请了$j$次,$k$表示本次换或不换,然后直接暴力转移 ...
- 洛谷P1850 换教室 [noip2016] 期望dp
正解:期望dp 解题报告: 哇我发现我期望这块真的布星,可能在刷了点儿NOIp之后会去搞一波期望dp的题...感觉连基础都没有打扎实?基础概念都布星! 好那先把这题理顺了嗷qwq 首先我们看到期望就会 ...
- 洛谷P1850 换教室_数学期望_Floyd
调了一下午QAQ-让我对数学期望的理解又提升了一个层次. 首先,我们发现 v<=300v<=300v<=300 , 这样我们就可以用 FloydFloydFloyd 算法来 O(n3 ...
- 洛谷P1003 铺地毯 noip2011提高组day1T1
洛谷P1003 铺地毯 noip2011提高组day1T1 洛谷原题 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n ...
随机推荐
- nodejs基础知识查缺补漏
1. 单线程.异步I/O.对比php nodejs是单线程的,但是是异步I/O,对于高并发时,它也能够快速的处理请求,100万个请求也可以承担,但是缺点是非常的耗内存,但是我们可以加大内存, 所以能用 ...
- ABP文档笔记 - 模块系统 及 配置中心
ABP框架 - 模块系统 ABP框架 - 启动配置 Module System Startup Configuration ABP源码分析三:ABP Module ABP源码分析四:Configura ...
- Http编程之HttpClient
在Android开发中,Android SDK附带了Apache的HttpClient,它是一个完善的客户端.它提供了对HTTP协议的全面支持,可以使用HttpClient的对象来执行HTTP GET ...
- 写些最近两个学安卓的笔记-关于Toast
1.Toast可以在Activity和service里使用,在Service里使用时,Toast是显示在当前的Activity上. 2.Toast出现时,当前的Activity依然可见可交互. 3.T ...
- hibernate框架配置文件详解
1 orm元数据配置文件(映射文件) <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hib ...
- nyoj 211——Cow Contest——————【floyd传递闭包】
Cow Contest 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 N (1 ≤ N ≤ 100) cows, conveniently numbered 1.. ...
- windows使用bat文件定时备份文件
遇到一个需求,需要备份Access数据库,Access生成的数据都保存在xx.mdb文件中,所以考虑使用windows任务 定时执行一个备份文件的bat文件来解决这个问题. backup.bat文件代 ...
- springmvc 全局的异常拦截处理 @ControllerAdvice注解 @ExceptionHandler
第一步: Dispatcher前端控制器的源码中 默认的 private boolean throwExceptionIfNoHandlerFound = false;说明如果没有找到匹配的执行器,不 ...
- Intellij idea配置scala开发环境
1.Intellij idea配置scala开发环境 解决Plugin Scala was not installed: No route to host Plugin Scala was not i ...
- all-to-mqtt