令人印象深刻的状态转移方程...

f[i][j][0/1]表示前i个换j次,第i次是否申请时的期望。

注意可能有重边,自环。

转移要分类讨论,距离是上/这次成功/失败的概率乘相应的路程。

从上次的0/1中取min

 #include <cstdio>
#include <cstring>
#include <algorithm>
const int N = , M = ;
const double INF = 1.0 * 0x3f3f3f3f; inline void read(int &x) {
x = ;
char c = getchar();
while(c > '' || c < '') {
c = getchar();
}
while(c >= '' && c <= '') {
x = (x << ) + (x << ) + c - ;
c = getchar();
}
return;
} int G[N][N], a[M], b[M];
double k[M], f[M][M][]; int main() {
int n, m, v, e;
read(n);
read(m);
read(v);
read(e);
for(int i = ; i <= n; i++) {
read(a[i]);
}
for(int i = ; i <= n; i++) {
read(b[i]);
}
for(int i = ; i <= n; i++) {
scanf("%lf", &k[i]);
}
int x, y, z;
memset(G, 0x3f, sizeof(G));
for(int i = ; i <= e; i++) {
read(x);
read(y);
read(z);
if(G[x][y]) {
G[y][x] = G[x][y] = std::min(G[x][y], z);
}
else {
G[x][y] = G[y][x] = z;
}
} /// floyd
for(int i = ; i <= v; i++) {
G[i][i] = ;
}
for(int p = ; p <= v; p++) {
for(int i = ; i <= v; i++) {
for(int j = ; j <= v; j++) {
G[i][j] = std::min(G[i][j], G[i][p] + G[p][j]);
}
}
} for(int i = ; i <= n; i++) {
for(int j = ; j <= m; j++) {
f[i][j][] = f[i][j][] = INF;
}
}
f[][][] = f[][][] = ;
for(int i = ; i <= n; i++) {
for(int j = ; j <= m; j++) {
f[i][j][] = std::min(f[i - ][j][] + G[a[i - ]][a[i]],
f[i - ][j][]
+ G[b[i - ]][a[i]] * k[i - ]
+ G[a[i - ]][a[i]] * ( - k[i - ]));
if(j) {
f[i][j][] = std::min(f[i - ][j - ][]
+ G[a[i - ]][b[i]] * k[i]
+ G[a[i - ]][a[i]] * ( - k[i]),
f[i - ][j - ][]
+ G[b[i - ]][b[i]] * k[i - ] * k[i]
+ G[b[i - ]][a[i]] * k[i - ] * ( - k[i])
+ G[a[i - ]][b[i]] * ( - k[i - ]) * k[i]
+ G[a[i - ]][a[i]] * ( - k[i - ]) * ( - k[i]));
}
}
} double ans = INF; for(int i = ; i <= m; i++) {
ans = std::min(ans, f[n][i][]);
ans = std::min(ans, f[n][i][]);
}
printf("%.2lf", ans); return ;
}

AC代码

我一开始把ans初值设的是0...

洛谷P1850 换教室的更多相关文章

  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 换教室(概率dp)

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

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

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

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

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

  8. bzoj4720 / P1850 换教室(Floyd+期望dp)

    P1850 换教室 先用Floyd把最短路处理一遍,接下来就是重头戏了 用 f [ i ][ j ][ 0/1 ] 表示在第 i 个时间段,发出了 j 次申请(注意不一定成功),并且在这个时间段是否( ...

  9. P1850 换教室

    P1850 换教室 现在有一张图, 有 \(v <= 300\) 个节点 你需要从 \(c_{1}\) 到 \(c_{2}\) 到 \(c_{n} (n <= 2000)\) 现在你有 \ ...

随机推荐

  1. 我的devops实践经验分享一二

    前言 随着系统越来越大,开发人员.站点.服务器越来越多,微服务化推进,......等等原因,实现自动化的devops越来越有必要. 当然,真实的原因是,在团队组建之初就预见到了这些问题,所以从一开始就 ...

  2. Linux内核分析— —扒开系统调用的三层皮(下)

    课程主要内容有三点: 在MenuOS中通过添加代码增加自定义的系统调用命令 使用gdb跟踪调试内核 简单分析system_call代码了解系统调用在内核代码中的处理过程 实验——分析system_ca ...

  3. LINUX内核分析第八周总结:进程的切换和系统的一般执行过程

    一.进程调度与进程切换 1.不同的进程有不同的调度需求 第一种分类: I/O密集型(I/O-bound) 频繁的进行I/O 通常会花费很多时间等待I/O操作的完成 CPU密集型(CPU-bound) ...

  4. 我的github地址 https://github.com/1010de/Test.git

    构建之法老师叫交下任务学习github,经过一段时间的学习和了解,看介绍.看视频.看博客.初步认识到github的方便与好处.     自己试着去注册和使用github,已经慢慢学会了一些基本操作. ...

  5. 软件工程(四)数据流图DFD

    结构化分析中,常用到数据模型为实体关系图,功能模型是数据流图 DFD 可以认为,一个基于计算机的信息处理系统由数据流和一系列的转换构成,这些转换将输入数据流变换为输出数据流.数据流图就是用来刻画数据流 ...

  6. Centos wget命令 not found解决方法

    如果已经有了yun源,则可通过yun源命令来安装wget. 如下所示: 2.yum安装yum -y install wget 即可安装:

  7. Maven 3.3全局配置

    Maven采用全局配置的方案: <?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to ...

  8. Docker 部署Gitlab

    sudo docker run -d \ -h 192.168.16.88 \ -p 89:80 -p 23:22 \ --name gitlab \ --restart always \ --vol ...

  9. [读书笔记]Linux命令行与shell编程读书笔记03 文件系统等

    1. 文件系统的种类 ext ext2 ext3 ext4 JFS XFS 其中ext3 开始支持journal日志模式 与raid卡类似 有 数据模式  排序模式 以及回写模式 数据模式最安全 回写 ...

  10. js條件結構和循環結構

    條件結構: if(語句1) if(語句1)else(語句2) if(語句1)elseif(語句2)else(語句3) switch結構: switch() { case 1: break: case ...