NOIP2016D1T3 换教室 (概率DP)
题目大意:有n个时间段,每个时间段i有两个教室a[i],b[i]可以上课,如果不申请换教室就在教室a[i]上课,如果换教室就在b[i]上课。你最多只能换m次教室。教室之间有一些双向路,保证教室两两可以到达。问上完n节课走路长度的数学期望。
题解:这是一道典型的概率dp题。重要的是状态的设计。
我们令dp[i][j][0/1]代表:第i个时间段换了j次课室这次换(0)还是不换(1)的数学期望。需要注意的是因为要满足dp的无后效性,必须要加上dp状态的第三维代表这一次还还是不换。
根据上次换还是不换和这次换还是不换, 那么就有4种结果。
dp[i][j][0]=min(dp[i-1][j][0]+上次和这次都不换的期望代价,dp[i-1][j][1]+上次换这次不换的期望代价);
dp[i][j][1]=min(dp[i-1][j-1][0]+上次不换这次换的期望代价,dp[i-1][j-1][1]+上次和这次都换的期望代价);
dp边界为dp[1][0][0]=dp[1][0][1]=0; 答案为在i==n中取最小值。
这道题还是有一些细节(期望代价的计算)得看代码的。
AC代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=+;
const int V=+;
const int INF=0x3f3f3f3f;
int n,m,v,e;
int a[N],b[N],map[V][V];
double k[N],dp[N][N][]; void floyd() {
for (int k=;k<=v;k++)
for (int i=;i<=v;i++)
for (int j=;j<=v;j++)
map[i][j]=min(map[i][j],map[i][k]+map[k][j]);
} int main()
{
scanf("%d%d%d%d",&n,&m,&v,&e);
for (int i=;i<=n;i++) scanf("%d",&a[i]);
for (int i=;i<=n;i++) scanf("%d",&b[i]);
for (int i=;i<=n;i++) scanf("%lf",&k[i]);
memset(map,0x3f,sizeof(map));
for (int i=;i<=v;i++) map[i][i]=;
for (int i=;i<=e;i++) {
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
if (map[x][y]>z) map[x][y]=z;
if (map[y][x]>z) map[y][x]=z;
} floyd(); for (int i=;i<=n;i++) for (int j=;j<=m;j++) dp[i][j][]=dp[i][j][]=INF;
dp[][][]=;
dp[][][]=;
double ans=INF;
for (int i=;i<=n;i++)
for (int j=;j<=m;j++) {
double w1=map[a[i-]][a[i]],w2=map[a[i-]][b[i]];
double w3=map[b[i-]][a[i]],w4=map[b[i-]][b[i]];
dp[i][j][]=min(dp[i-][j][]+w1,dp[i-][j][]+w1*(-k[i-])+w3*k[i-]);
double temp=w1*(-k[i-])*(-k[i])+w2*(-k[i-])*(k[i])+w3*(k[i-])*(-k[i])+w4*(k[i-])*(k[i]);
if (j) dp[i][j][]=min(dp[i-][j-][]+w1*(-k[i])+w2*(k[i]),dp[i-][j-][]+temp); if (i==n) ans=min(ans,min(dp[i][j][],dp[i][j][]));
}
printf("%.2lf",ans);
return ;
}
NOIP2016D1T3 换教室 (概率DP)的更多相关文章
- P1850 换教室 概率dp
其实说是概率dp,本质上和dp没什么区别,就是把所有可能转移的情况全枚举一下就行了,不过dp方程确实有点长... ps:这个题的floyed我竟然之前写跪了... 题目: 题目描述 对于刚上大学的牛牛 ...
- luogu 1850 换教室 概率+dp
非常好的dp,继续加油练习dp啊 #include<bits/stdc++.h> #define rep(i,x,y) for(register int i=x;i<=y;i++) ...
- 换教室(期望+DP)
换教室(期望+DP) \(dp(i,j,1/0)\)表示第\(i\)节课,申请了\(j\)次调换,这节课\(1/0\)调换. 换教室 转移的时候考虑: 上次没申请 这次也没申请 加上\(dis(fr[ ...
- 【bzoj4720】[NOIP2016]换教室 期望dp
题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程.在可以选择的课程中,有2n节课程安排在n个时间段上.在第i(1≤i≤n)个时间段上,两节内容相同的课程同时在不同的 ...
- 【BZOJ4720】【NOIP2016】换教室 [期望DP]
换教室 Time Limit: 20 Sec Memory Limit: 512 MB[Submit][Status][Discuss] Description Input 第一行四个整数n,m,v ...
- Bzoj 4720 换教室 (期望DP)
刚发现Bzoj有Noip的题目,只会换教室这道题..... Bzoj 题面:Bzoj 4720 Luogu题目:P1850 换教室 大概是期望DPNoip极其友好的一道题目,DP不怎么会的我想到了,大 ...
- bzoj4720: [Noip2016]换教室(期望dp)
4720: [Noip2016]换教室 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1294 Solved: 698[Submit][Status ...
- Luogu P1850 换教室(期望dp)
P1850 换教室 题意 题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有\(2n\)节课程安排在\(n\)个时间段上.在第\(i(1\l ...
- P1850 换教室 期望dp
P1850 换教室 题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 2n2n 节课程安排在 nn 个时间段上.在第 ii(1 \leq ...
随机推荐
- 分布式理论 BASE、CAP、ACID
CAP原理: 在理论计算机科学中,CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer's theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点: 一致性(Co ...
- GO string 的学习
1.replace func Replace(s, old, new string, n int) string s:原来的字符串 old: 要被替换的久的字符串 new string:要替换旧字符串 ...
- C++ 从txt文本中读取map
由于存入文本文件的内容都为文本格式,所以在读取内容时需要将文本格式的内容遍历到map内存中,因此在读取时需要将文本进行切分(切分成key和value) 环境gcc #include<iostre ...
- java 大数运算,高精度模板
转自:https://blog.csdn.net/stffer/article/details/46382949 有修改 关于BigInteger类更详细的用法请移步官方文档 package prac ...
- java基础复习(二)
一. 基本语法 如果一个源文件中什么内容都没有,编译会不会生成 字节码文件?不会 如果一个类中没有主方法(如下图),编译运行会怎么样?编译可以通过,但运行报错 : 没有主方法 主方法 : 是一个特殊的 ...
- Centos6安装zabbix-agent
一.安装yum源 rpm -ivh https://repo.zabbix.com/zabbix/3.4/rhel/6/x86_64/zabbix-release-3.4-1.el6.noarch.r ...
- rem字体+百分比布局表格
效果图: 上源码 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- 4412 chmod权限
chmod权限 使用命令"man 2 chmod"学习chmod函数• int chmod(const char *path, mode_t mode);– 参数*path:文件路 ...
- English-GIS
"Toposheet" 是 "Topographic sheet" 的简称,既地形图图幅的意思.
- MVC和WebApi 使用get和post 传递参数。 转载https://blog.csdn.net/qq373591361/article/details/51508806
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq373591361/article/details/51508806我们总结一下用js请求服务器的 ...