错是被学长挑出来的。。。QWQ@Monster_Yi

f[i][j][0/1] 为 第i天,换j次,换1/没换0

然后大力DP

#include<cstdio>
#include<iostream>
#include<cstring>
#define R register int
using namespace std;
struct node{int c,d;#define c(i) a[i].c#define d(i) a[i].d
}a[10010];
int n,m,v,ee;
long long e[310][310];
double k[2010],f[2010][2010][2],ans=1e17+10;
inline void floyed() {for(R k=1;k<=v;++k) for(R i=1;i<=v;++i) for(R j=1;j<=v;++j) e[i][j]=min(e[i][j],e[i][k]+e[k][j]);}
signed main() {scanf("%d%d%d%d",&n,&m,&v,&ee);for(R i=1;i<=n;++i) scanf("%d",&c(i)); for(R i=1;i<=n;++i) scanf("%d",&d(i)); for(R i=1;i<=n;++i) scanf("%lf",&k[i]);memset(e,0x3f,sizeof e); for(R i=1,u,vv,w;i<=ee;++i) scanf("%d%d%d",&u,&vv,&w),e[u][vv]=e[vv][u]=min(e[u][vv],(long long)w);for(R i=1;i<=v;++i) e[i][i]=0; floyed(); //for(R i=1;i<=v;++i,cout<<endl)for(R j=1;j<=v;++j) cout<<e[i][j]<<" ";for(R i=0;i<=n;++i) for(R j=0;j<=n;++j) f[i][j][1]=f[i][j][0]=1e17+10; f[1][0][0]=f[1][1][1]=0;for(R i=2;i<=n;++i) { f[i][0][0]=f[i-1][0][0]+e[c(i)][c(i-1)];for(R j=1;j<=min(i,m);++j){f[i][j][0]=min(f[i][j][0],min(f[i-1][j][0]+e[c(i)][c(i-1)],f[i-1][j][1]+k[i-1]*e[c(i)][d(i-1)]+(1-k[i-1])*e[c(i)][c(i-1)]));f[i][j][1]=min(f[i][j][1],min(f[i-1][j-1][0]+k[i]*e[d(i)][c(i-1)]+(1-k[i])*e[c(i)][c(i-1)],f[i-1][j-1][1]+k[i-1]*k[i]*e[d(i)][d(i-1)]+(1-k[i])*(1-k[i-1])*e[c(i)][c(i-1)]+k[i]*(1-k[i-1])*e[d(i)][c(i-1)]+(1-k[i])*k[i-1]*e[c(i)][d(i-1)]));}} for(R i=0;i<=m;++i) ans=min(min(f[n][i][0],f[n][i][1]),ans);//,cout<<f[n][i][0]<<" "<<f[n][i][1]<<endl;printf("%.2lf\n",ans);
}


2019.04.07

转载于:https://www.cnblogs.com/Jackpei/p/10665482.html

BZOJ 4720: [Noip2016]换教室相关推荐

  1. BZOJ 4720 [Noip2016]换教室

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

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

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

  3. noip2016 换教室

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

  4. Noip2016换教室

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

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

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

  6. 洛谷1850(NOIp2016) 换教室——期望dp

    题目:https://www.luogu.org/problemnew/show/P1850 状态里记录的是"上一回有没有申请",而不是"上一回申请成功否",不 ...

  7. P1850 [NOIP2016 提高组] 换教室

    P1850 [NOIP2016 提高组] 换教室 题意: 有2n个课安排在n个时间段上,每个时间段上都有两个一样的课同时在不同地方上,起初牛牛被所有课都被安排在Ci上课,另一节课在Di上课.牛牛现在想 ...

  8. 【NOIp2016 day1t3】换教室

    NOIP第一次考期望,着实吓一跳... 读入之后, 由于 n<=200 n <= 200 n,给我们建立了天然的 floyd f l o y d floyd的机会, 建完图之后,能够顺利的 ...

  9. 【DP】【期望】$P1850$换教室

    [DP][期望]\(P1850\)换教室 链接 题目描述 有 \(2n\) 节课程安排在$ n$ 个时间段上.在第 \(i\)(\(1 \leq i \leq n\))个时间段上,两节内容相同的课程同 ...

最新文章

  1. 人脸识别技术在支付场景的机遇与挑战
  2. leetcode954. 二倍数对数组(treemap)
  3. hbase动态更改行键设计_谈笑间学会Hbase Rowkey设计
  4. 高通滤波器的电压传递函数_一次弄懂低通、高通、带通、带阻、状态可调滤波器!...
  5. will would 七大用法总结
  6. 超级科学计算机bug,人类或生活在虚拟世界中,科学家发现三大宇宙BUG,让人细思极恐...
  7. 什么是CGCS2000坐标系
  8. vue使用LayIM组件接入第三方通讯平台:融云
  9. xps15 9500加装1T硬盘
  10. 东西归置20210815
  11. Tomcat部署时war和war exploded区别以及平时踩得坑
  12. 【python的擅长领域】
  13. 罗斯蒙特248温度变送器248HANANONS
  14. ESP32学习记录 OLED u8g2库
  15. APK部署手机上出现闪退现象
  16. 苹果微信更新不了最新版本_iPhone最新屏蔽系统更新方法,全版本适用
  17. 2020 豆瓣API使用(代理方法) 解决无key方法 code 104解决方法
  18. Json转换对象工具类
  19. 可以高度定制的代理服务器anyproxy
  20. GCN实战深入浅出图神经网络第五章:基于Cora数据集的GCN节点分类 代码分析

热门文章

  1. linux输出mac,Linux(Mac)命令ll输出后各个字段的含义
  2. mysql function select 赋值_MySql 进阶
  3. 小米笔记本服务器系统,小米笔记本Pro GTX版
  4. sessionlistener方法中获取session中存储的值报空指针异常_从Golang实践中得到的教训...
  5. html 换行符_每个非网站开发人员都应该了解的21个HTML基础知识
  6. python文本去重_Python做文本按行去重的实现方法
  7. css 固定内容显示范围,css之让文字在一定范围内显示,不超过固定的宽度和高度...
  8. java中isolate时间_flutter/dart里面,一个isolate一般heap多大?
  9. springmvc 前端传给后台中文数据时,会产生乱码
  10. 深入理解javascript原型和闭包(7)——原型的灵活性