换教室

期望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提高组]的更多相关文章

  1. 洛谷 P1850 换教室 解题报告

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

  2. 洛谷——P1850 换教室

    P1850 换教室 有 2n 节课程安排在 nn 个时间段上.在第 i个时间段上,两节内容相同的课程同时在不同的地点进行,其中,牛牛预先被安排在教室 $c_i$​ 上课,而另一节课程在教室 $d_i$ ...

  3. 洛谷 P1850 换教室

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

  4. 洛谷P1850换教室

    题目传送门 理解题意:给定你一个学期的课程和教室数量以及教室之间的距离还有换教室成功的概率,求一个学期走的距离的期望最小值 题目是有够恶心的,属于那种一看就让人不想刷的题目...很明显的动规,但是那个 ...

  5. 洛谷P1850 换教室

    令人印象深刻的状态转移方程... f[i][j][0/1]表示前i个换j次,第i次是否申请时的期望. 注意可能有重边,自环. 转移要分类讨论,距离是上/这次成功/失败的概率乘相应的路程. 从上次的0/ ...

  6. 洛谷P1850 换教室(概率dp)

    传送门 我的floyd竟然写错了?今年NOIP怕不是要爆零了? 这就是一个概率dp 我们用$dp[i][j][k]$表示在第$i$个时间段,已经申请了$j$次,$k$表示本次换或不换,然后直接暴力转移 ...

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

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

  8. 洛谷P1850 换教室_数学期望_Floyd

    调了一下午QAQ-让我对数学期望的理解又提升了一个层次. 首先,我们发现 v<=300v<=300v<=300 , 这样我们就可以用 FloydFloydFloyd 算法来 O(n3 ...

  9. 洛谷P1003 铺地毯 noip2011提高组day1T1

    洛谷P1003 铺地毯 noip2011提高组day1T1 洛谷原题 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n ...

随机推荐

  1. 01-spring配置详解

    1 bean元素 <!--将User对象交给spring容器进行管理 --> <!-- Bean元素:使用该元素描述需要spring容器管理的对象 class属性:被管理对象的完整类 ...

  2. 推荐文章unity框架与工具

    https://www.indienova.com/u/kuaile/blogread/1343

  3. SpringBoot集成JWT 实现接口权限认证

    JWT介绍 Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的, 特别适用于分布式站点 ...

  4. C#基础(第一天)

    Ctrl+K+D:对其代码: #Region      #endRegion:折叠多余代码: Ctrl+K+S:可以折叠代码写注释: 语法格式:数据类型  变量名:                  ...

  5. TFS2013 设置签出独占锁(转载)

    作者:晓菜鸟 出处:http://www.cnblogs.com/52XF/p/4239056.html 在使用TFS进行源代码管理的时候VS默认允许多个签出,但在团队开发中往往需要设置独占锁(排他锁 ...

  6. setInterval()的三种写法

    前言: setInterval("fun()",time)有两个参数:fun()为要执行的函数:time为多久执行一次函数,单位是毫秒: 我们做一个简单的例子,就是每隔5s弹出一个 ...

  7. java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ 解决方案

    //第一个异常 Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysq ...

  8. Visual Paradigm for UML 10.0 SP1 企业中文下载地址、安装及激活详解教程

    https://blog.csdn.net/u013354805/article/details/46531833

  9. javaSystem.out.println()输出byte[]和char[]异常的问题

    javaSystem.out.println()输出byte[]和char[]异常的问题 今天 突然有人问我他写的byte[]和char[],在用System.out.println()输出的时候所得 ...

  10. Django的MTV模式详解

    参考博客:https://www.cnblogs.com/yuanchenqi/articles/7629939.html 一.MVC模型 Web服务器开发领域里著名的MVC模式. 所谓MVC就是把W ...