洛谷P1850 换教室
令人印象深刻的状态转移方程...
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 换教室的更多相关文章
- 洛谷 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 换教室(概率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 ...
- bzoj4720 / P1850 换教室(Floyd+期望dp)
P1850 换教室 先用Floyd把最短路处理一遍,接下来就是重头戏了 用 f [ i ][ j ][ 0/1 ] 表示在第 i 个时间段,发出了 j 次申请(注意不一定成功),并且在这个时间段是否( ...
- P1850 换教室
P1850 换教室 现在有一张图, 有 \(v <= 300\) 个节点 你需要从 \(c_{1}\) 到 \(c_{2}\) 到 \(c_{n} (n <= 2000)\) 现在你有 \ ...
随机推荐
- CrackMe005-下篇 | 逆向破解分析 | 160个CrackMe(视频+图文)深度解析系列
作者:逆向驿站微信公众号:逆向驿站知乎:逆向驿站 CrackMe005,上篇说了具体方法,下篇来发逆向分析过程,看看老夫是如何得到上篇的具体方法的! 准备 [环境和工具] win7/xp虚拟机环境 C ...
- SpringMvc返回Json调试
spring-web-5.0.6.RELEASE.jar!/org/springframework/web/method/support/HandlerMethodReturnValueHandler ...
- Redis哨兵模式(sentinel)学习总结及部署记录(主从复制、读写分离、主从切换)
Redis的集群方案大致有三种:1)redis cluster集群方案:2)master/slave主从方案:3)哨兵模式来进行主从替换以及故障恢复. 一.sentinel哨兵模式介绍Sentinel ...
- libc.so.6: version 'GLIBC_2.14' not found报错提示的解决方案
线上一台服务器在执行leveldb程序的时候,报错:"libc.so.6: version `GLIBC_2.14' not found". 排查原因及解决方法如下: 1)产生原因 ...
- Python_复习_习题_29
# 之前做得的题 以后再遇到能保证会# 下周二考 :所有的知识# 面试题:认真对待## 三元运算符# 接收结果的变量 = 条件为真的结果 if 条件 else 条件为假的结果# 接收结果的变量 = “ ...
- 牛客训练赛25-A-最长区间
https://www.nowcoder.com/acm/contest/158#question 这题问最长的严格连续递增序列的最长长度是多少? 最开始感觉这道题不可做,因为有1e5个点,还有1e5 ...
- Notes of Daily Scrum Meeting(12.23)
今天的团队任务总结如下: 团队成员 今日团队工作 陈少杰 调试网络连接,寻找新的连接方法 王迪 建立搜索的UI界面 金鑫 查阅相关资料,熟悉后台的接口 雷元勇 建立搜索的界面 高孟烨 继续美化界面,熟 ...
- 12.16 Daily Scrum
Today's Task Tomorrow's Task 丁辛 实现和菜谱相关的餐厅列表. 实现和菜谱相关的餐厅列表. 邓亚梅 美化搜索框UI. 美 ...
- #科委外文文献发现系统——导出word模板1.0
ps:该篇文档由实验室ljg提供. Crowdsourcing 一. 技术简介 Crowdsourcing, a modern business term coined in ...
- 非post请求时整个url作为参数传递出现bug
在非post请求使用整个url作为参数传递到后台时会出现url被截断的bug,这时通过encodeURIComponent进行url的编码可以解决.示例如下: <!--参数url-->Ur ...