洛谷1850(NOIp2016) 换教室——期望dp
题目: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相关推荐
- luogu1850 [NOIp2016]换教室 (floyd+dp)
首先floyd求出每两点间的距离(注意自己到自己的距离要设成0) 然后就是dp了 一开始照着Lifeguards的样子,钦定了一下i这个点一定要选,然后发现复杂度不对,还想了好长时间优化 然后一翻题解 ...
- 洛谷4550 收集邮票(期望DP)
传送门 [题目分析] 为啥这道题都是道权限题.... 虽然代码很短,但是要想清楚还是很难. 令f[i]表示当前已经拥有了i种邮票,要拥有n种邮票的期望操作次数. 那么对于下一次 ...
- BZOJ 4720 [Noip2016]换教室
4720: [Noip2016]换教室 Description 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程.在可以选择的课程中,有2n节课程安排在n个时间段上.在第i( ...
- 洛谷P2507 [SCOI2008]配对 题解(dp+贪心)
洛谷P2507 [SCOI2008]配对 题解(dp+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1299251 链接题目地址:洛谷P2507 [S ...
- [NOIP2016]换教室(概率期望$DP$)
其实吧我老早就把这题切了--因为说实话,这道题确实不难啊--李云龙:比他娘的状压DP简单多了 今天我翻以前在Luogu上写的题解时,突然发现放错代码了,然后被一堆人\(hack\)--蓝瘦啊\(ORZ ...
- Noip2016换教室
传送门! Simple Description: 牛牛有$n$节课要上,每个时段都有$2$个教室在上课(具体来说是第$c[i]$与第$d[i]$个教室),牛牛在其中的一个教室上课,牛牛起初每节课分别被 ...
- 洛谷P4322 最佳团伙(树上dp)
题目描述 洛谷传送门 题目描述 JSOI 信息学代表队一共有 N 名候选人,这些候选人从 1 到 N 编号.方便起见,JYY 的编号是 0 号.每个候选人都由一位编号比他小的候选人Ri推荐.如果 Ri ...
- 【题解】洛谷P4158 [SCOI2009] 粉刷匠(DP)
次元传送门:洛谷P4158 思路 f[i][j][k][0/1]表示在坐标为(i,j)的格子 已经涂了k次 (0是此格子涂错 1是此格子涂对)涂对的格子数 显然的是 每次换行都要增加一次次数 那么当j ...
- 洛谷 P3205 [HNOI2010]合唱队(区间dp)
题目链接: [HNOI2010]合唱队 - 洛谷https://www.luogu.com.cn/problem/P3205 思路: 这题我是看了题解才做出来的,贴一下这位大佬的博客题解 P320 ...
最新文章
- 我的centos上安装 jdk+apache+tomcat+tomcatconnector+myql 安装道路
- python爬虫入门代码-Python爬虫入门
- 深入Python(5):递归
- java web 应用目录
- 中石油训练赛 - Insertion Order(二叉搜索树+构造)
- android软解码花屏,视频花屏 · Issue #386 · bilibili/ijkplayer · GitHub
- oracle技术之查询初始化参数的方法(六)
- STM32----摸石头过河系列(一)
- 什么鬼,面试官竟然让我用Redis实现一个消息队列!!?
- 快慢结合搞定网站优化排名(二)-内链
- 给软件工程师的学习参考
- python报表自动化系列 - 获取指定目录所有文件绝对路径
- SSH学习之MVC和三层架构的区别
- 服务器IIS配置添加下载扩展名
- MFC使用自带的MSXML6.dll解析xml(开发环境vc2010)
- 胡昊—第8次作业--继承
- Android手机录制屏幕并转gif图
- Consider defining a bean of type问题
- 好看的css下拉框样式,实用的漂亮的下拉框-CUSTOM DROP-DOWN LIST STYLING
- project.pbxproj文件介绍
热门文章
- VS2010 ASP.NET MVC4 安装失败问题
- Mel滤波器组的设计与实现(基于MATLAB和Python)
- 基于SSM+Layui实现医院预约挂号系统
- underscore
- swift处理网络返回数据(封装)
- CALayer 知识:创建带阴影效果的圆角图片图层和创建自定义绘画内容图层
- 关于FluentNhibernate数据库连接配置,请教
- 妈呀,终于搞定VIM的复制粘贴问题了!
- Windows:让Windows XP中的IIS支持多站点的工具
- 再学 GDI+[81]: TGPImage(1) - 显示图像