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

状态里记录的是”上一回有没有申请“,而不是”上一回申请成功否“,不然“申请 j 次”就没法转移了。

double不能memset,所以手动。

别忘了dis[ i ][ i ]=0。

有重边!!!所以读入边的时候取一下min!

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define db double
using namespace std;
const int N=2005,V=305,M=90005;
const db INF=0x3f3f3f3f;
int n,K,num,ent,c[N],d[N],dis[V][V];
db p[N],dp[2][N][2],ans=INF;
void mmst(db a[N][2])
{for(int j=0;j<=K;j++)a[j][0]=a[j][1]=INF;
}
int main()
{scanf("%d%d%d%d",&n,&K,&num,&ent);int x,y,z;for(int i=1;i<=n;i++)scanf("%d",&c[i]);for(int i=1;i<=n;i++)scanf("%d",&d[i]);for(int i=1;i<=n;i++)scanf("%lf",&p[i]);memset(dis,0x3f,sizeof dis);while(ent--){scanf("%d%d%d",&x,&y,&z);dis[x][y]=min(dis[x][y],z);dis[y][x]=dis[x][y];//?!
//        dis[x][y]=dis[y][x]=z;
    }for(int i=1;i<=num;i++)dis[i][i]=0;//
    for(int k=1;k<=num;k++)for(int i=1;i<=num;i++)for(int j=1;j<=num;j++)dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);mmst(dp[1]);dp[1][0][0]=dp[1][1][1]=0;for(int i=2;i<=n;i++){int x=c[i-1],y=c[i],u=d[i-1],v=d[i],fx=(i&1);mmst(dp[fx]);for(int j=0;j<=K;j++){dp[fx][j][0]=min(dp[!fx][j][0]+dis[x][y],dp[!fx][j][1]+p[i-1]*dis[u][y]+(1-p[i-1])*dis[x][y]);if(j)dp[fx][j][1]=min(dp[!fx][j-1][0]+p[i]*dis[x][v]+(1-p[i])*dis[x][y],dp[!fx][j-1][1]+p[i]*p[i-1]*dis[u][v]+p[i]*(1-p[i-1])*dis[x][v]+(1-p[i])*p[i-1]*dis[u][y]+(1-p[i])*(1-p[i-1])*dis[x][y]);}}int fx=(n&1);for(int j=0;j<=K;j++)ans=min(ans,min(dp[fx][j][0],dp[fx][j][1]));printf("%.2lf\n",ans);return 0;
}

转载于:https://www.cnblogs.com/Narh/p/9367485.html

洛谷1850(NOIp2016) 换教室——期望dp相关推荐

  1. luogu1850 [NOIp2016]换教室 (floyd+dp)

    首先floyd求出每两点间的距离(注意自己到自己的距离要设成0) 然后就是dp了 一开始照着Lifeguards的样子,钦定了一下i这个点一定要选,然后发现复杂度不对,还想了好长时间优化 然后一翻题解 ...

  2. 洛谷4550 收集邮票(期望DP)

    传送门 [题目分析]    为啥这道题都是道权限题....    虽然代码很短,但是要想清楚还是很难.    令f[i]表示当前已经拥有了i种邮票,要拥有n种邮票的期望操作次数.    那么对于下一次 ...

  3. BZOJ 4720 [Noip2016]换教室

    4720: [Noip2016]换教室 Description 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程.在可以选择的课程中,有2n节课程安排在n个时间段上.在第i( ...

  4. 洛谷P2507 [SCOI2008]配对 题解(dp+贪心)

    洛谷P2507 [SCOI2008]配对 题解(dp+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1299251 链接题目地址:洛谷P2507 [S ...

  5. [NOIP2016]换教室(概率期望$DP$)

    其实吧我老早就把这题切了--因为说实话,这道题确实不难啊--李云龙:比他娘的状压DP简单多了 今天我翻以前在Luogu上写的题解时,突然发现放错代码了,然后被一堆人\(hack\)--蓝瘦啊\(ORZ ...

  6. Noip2016换教室

    传送门! Simple Description: 牛牛有$n$节课要上,每个时段都有$2$个教室在上课(具体来说是第$c[i]$与第$d[i]$个教室),牛牛在其中的一个教室上课,牛牛起初每节课分别被 ...

  7. 洛谷P4322 最佳团伙(树上dp)

    题目描述 洛谷传送门 题目描述 JSOI 信息学代表队一共有 N 名候选人,这些候选人从 1 到 N 编号.方便起见,JYY 的编号是 0 号.每个候选人都由一位编号比他小的候选人Ri推荐.如果 Ri ...

  8. 【题解】洛谷P4158 [SCOI2009] 粉刷匠(DP)

    次元传送门:洛谷P4158 思路 f[i][j][k][0/1]表示在坐标为(i,j)的格子 已经涂了k次 (0是此格子涂错 1是此格子涂对)涂对的格子数 显然的是 每次换行都要增加一次次数 那么当j ...

  9. 洛谷 P3205 [HNOI2010]合唱队(区间dp)

     题目链接: [HNOI2010]合唱队 - 洛谷https://www.luogu.com.cn/problem/P3205  思路: 这题我是看了题解才做出来的,贴一下这位大佬的博客题解 P320 ...

最新文章

  1. 我的centos上安装 jdk+apache+tomcat+tomcatconnector+myql 安装道路
  2. python爬虫入门代码-Python爬虫入门
  3. 深入Python(5):递归
  4. java web 应用目录
  5. 中石油训练赛 - Insertion Order(二叉搜索树+构造)
  6. android软解码花屏,视频花屏 · Issue #386 · bilibili/ijkplayer · GitHub
  7. oracle技术之查询初始化参数的方法(六)
  8. STM32----摸石头过河系列(一)
  9. 什么鬼,面试官竟然让我用Redis实现一个消息队列!!?
  10. 快慢结合搞定网站优化排名(二)-内链
  11. 给软件工程师的学习参考
  12. python报表自动化系列 - 获取指定目录所有文件绝对路径
  13. SSH学习之MVC和三层架构的区别
  14. 服务器IIS配置添加下载扩展名
  15. MFC使用自带的MSXML6.dll解析xml(开发环境vc2010)
  16. 胡昊—第8次作业--继承
  17. Android手机录制屏幕并转gif图
  18. Consider defining a bean of type问题
  19. 好看的css下拉框样式,实用的漂亮的下拉框-CUSTOM DROP-DOWN LIST STYLING
  20. project.pbxproj文件介绍

热门文章

  1. VS2010 ASP.NET MVC4 安装失败问题
  2. Mel滤波器组的设计与实现(基于MATLAB和Python)
  3. 基于SSM+Layui实现医院预约挂号系统
  4. underscore
  5. swift处理网络返回数据(封装)
  6. CALayer 知识:创建带阴影效果的圆角图片图层和创建自定义绘画内容图层
  7. 关于FluentNhibernate数据库连接配置,请教
  8. 妈呀,终于搞定VIM的复制粘贴问题了!
  9. Windows:让Windows XP中的IIS支持多站点的工具
  10. 再学 GDI+[81]: TGPImage(1) - 显示图像