题目链接:https://www.luogu.org/problemnew/show/P1850

难的不在状态上,难在转移方程。

(话说方程写错居然还有84分= =)

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define ll long long
using namespace std;
const ll maxn = 2010;
ll n, m, v, e, c[maxn], d[maxn], u[maxn][maxn], a, b, w;
double k[maxn], l[maxn], dp[maxn][maxn][2], ans = 1e9;
int main()
{
//freopen("change.in","r",stdin);
ios::sync_with_stdio(false);
memset(u, 63, sizeof(u));
memset(dp, 127, sizeof(dp));
cin>>n>>m>>v>>e;
for(ll i = 1; i <= n; i++)
cin>>c[i];
for(ll i = 1; i <= n; i++)
cin>>d[i];
for(ll i = 1; i <= n; i++)
{cin>>k[i]; l[i] = 1-k[i];}
for(ll i = 1; i <= e; i++)
{
cin>>a>>b>>w;
u[a][b] = min(w, u[a][b]);
u[b][a] = min(w, u[b][a]);
}
for(ll q = 1; q <= v; q++)
for(ll i = 1; i <= v; i++)
for(ll j = 1; j <= v; j++)
if(i != q && j != q && i != j) u[i][j] = min(u[i][j], u[i][q] + u[q][j]);
for(ll i = 1; i <= v; i++) u[i][i] = u[i][0] = u[0][i] = 0;
dp[1][0][0] = dp[1][1][1] = 0;
for(ll i = 2; i <= n; i++)
{
ll x1 = c[i], x2 = c[i-1], y1 = d[i], y2 = d[i-1];
dp[i][0][0] = dp[i-1][0][0] + u[x2][x1];
for(ll j = 0; j <= min(i, m); j++)
{
dp[i][j][0] = min(dp[i][j][0], min(dp[i-1][j][0] + u[x2][x1], dp[i-1][j][1] + l[i-1] * u[x2][x1] + k[i-1] * u[y2][x1]));
dp[i][j][1] = min(dp[i][j][1], min(dp[i-1][j-1][0] + u[x2][x1] * l[i] + u[x2][y1] * k[i], dp[i-1][j-1][1] + k[i-1] * l[i] * u[y2][x1] + l[i] * l[i-1] * u[x2][x1] + k[i] * k[i-1] * u[y2][y1] + l[i-1] * k[i] * u[x2][y1]));
}
}
for(ll i = 0; i <= m; i++)
ans = min(ans, min(dp[n][i][0], dp[n][i][1]));
printf("%0.2lf",ans);
return 0;
}

【luogu P1850 换教室】 题解的更多相关文章

  1. Luogu P1850 换教室(期望dp)

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

  2. Luogu P1850换教室【期望dp】By cellur925

    题目传送门 首先这个题我们一看它就是和概率期望有关,而大多数时候在OI中遇到他们时,都是与dp相关的. \(Vergil\)学长表示,作为\(NOIp2016\)的当事人,他们考前奶联赛一定不会考概率 ...

  3. luogu P1850 换教室

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

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

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

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

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

  6. P1850 换教室

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

  7. 洛谷——P1850 换教室

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

  8. 洛谷 P1850 换教室

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

  9. P1850 换教室 期望dp

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

随机推荐

  1. javascrip 实现简单的计算器功能

    页面样式 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  2. python学习之老男孩python全栈第九期_day022作业

    1. 写一个求正方形周长和面积的类 class Square: def __init__(self, length): self.length = length def area(self): ret ...

  3. Python之面向对象继承复习

    总结:self是谁就从谁开始寻找

  4. 01.css选择器-->类选择器

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 代码积累-Common

    新建Common类库 /// <summary> /// string的扩展 /// </summary> public static class StringExt { // ...

  6. SVN - Checksum mismatch while updating

    Go to the folder with the file causing problems Execute command svn update --set-depth empty (note: ...

  7. xshell连接虚拟机Connection failed

    一.问题描述:xshell连接不了虚拟机,出现错误提示:Could not connect to '192.168.1.100' (port 22): Connection failed. 二.查找错 ...

  8. RN 解决CFBundleIdentifier", Does Not Exist

    mac环境下,在命令行中run-ios构建时报错:CFBundleIdentifier", Does Not Exist 打开XCode,进入.xcodeproj文件,运行,编译时报错:'b ...

  9. css中的圣杯布局和双飞翼布局

    圣杯布局 布局要求: 三列布局,中间自适应,两边定宽 中间栏要在浏览器优先渲染 允许任意列的高度最高 用最简单的CSS.最少的HACK语句 解释说明: 1.min-width:700px是为了当页面缩 ...

  10. CopyrightHelper—开源VS插件辅助插入版权注释

    前言 有很多时候,我们在写代码的时候需要在代码文件头加上描述和版权信息等,如果使用代码项目模板又得为每种文件定模板,而已不方便,如果从某个地方复制过来,又嫌麻烦... 为了能解决这种懒人的需求,我开始 ...