非常好的dp,继续加油练习dp啊

#include<bits/stdc++.h>
#define rep(i,x,y) for(register int i=x;i<=y;i++) using namespace std; const int N=2e3+;
const double inf=1e8+;
const int V=;
int n,m,v,e,c[N],d[N],g[V][V];
double k[N],f[N][N][],ans; inline int read(){
int x=,f=;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-;ch=getchar();}
while(isdigit(ch)){x=(x<<)+(x<<)+(ch^);ch=getchar();}
return x*f;} int main(){
n=read(),m=read(),v=read(),e=read();
rep(i,,n) c[i]=read();
rep(i,,n) d[i]=read();
rep(i,,n) cin>>k[i];
memset(g,,sizeof g);
rep(i,,e){
int u=read(),v=read(),w=read();
g[u][v]=g[v][u]=min(g[u][v],w);}
rep(k,,v)rep(i,,v)rep(j,,v)
g[i][j]=min(g[i][k]+g[k][j],g[i][j]);
rep(i,,v) g[i][i]=g[i][]=g[][i]=;
rep(i,,n)rep(j,,m) f[i][j][]=f[i][j][]=inf;
f[][][]=f[][][]=;
rep(i,,n){
f[i][][]=f[i-][][]+g[c[i-]][c[i]];
rep(j,,min(i,m)){
int k1=c[i-],k2=d[i-],k3=c[i],k4=d[i];
f[i][j][]=min(f[i][j][],f[i-][j][]+g[k1][k3]);
f[i][j][]=min(f[i][j][],f[i-][j][]+g[k1][k3]*(-k[i-])+g[k2][k3]*k[i-]);
f[i][j][]=min(f[i][j][],f[i-][j-][]+g[k1][k3]*(-k[i])+g[k1][k4]*k[i]);
f[i][j][]=min(f[i][j][],f[i-][j-][]+g[k1][k3]*(-k[i-])*(-k[i])+g[k2][k3]*k[i-]*(-k[i])+g[k1][k4]*(-k[i-])*k[i]+g[k2][k4]*k[i-]*k[i]);
}
}ans=inf;
rep(i,,m)ans=min(ans,min(f[n][i][],f[n][i][]));
printf("%.2lf\n",ans);return ;
}

怀挺,下一个

luogu 1850 换教室 概率+dp的更多相关文章

  1. Luogu P1850 换教室(期望dp)

    P1850 换教室 题意 题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有\(2n\)节课程安排在\(n\)个时间段上.在第\(i(1\l ...

  2. P1850 换教室 概率dp

    其实说是概率dp,本质上和dp没什么区别,就是把所有可能转移的情况全枚举一下就行了,不过dp方程确实有点长... ps:这个题的floyed我竟然之前写跪了... 题目: 题目描述 对于刚上大学的牛牛 ...

  3. 换教室(期望+DP)

    换教室(期望+DP) \(dp(i,j,1/0)\)表示第\(i\)节课,申请了\(j\)次调换,这节课\(1/0\)调换. 换教室 转移的时候考虑: 上次没申请 这次也没申请 加上\(dis(fr[ ...

  4. Luogu P1850 [NOIp2016提高组]换教室 | 期望dp

    题目链接 思路: <1>概率与期望期望=情况①的值*情况①的概率+情况②的值*情况②的概率+--+情况n的值*情况n的概率举个例子,抛一个骰子,每一面朝上的概率都是1/6,则这一个骰子落地 ...

  5. Bzoj 4720 换教室 (期望DP)

    刚发现Bzoj有Noip的题目,只会换教室这道题..... Bzoj 题面:Bzoj 4720 Luogu题目:P1850 换教室 大概是期望DPNoip极其友好的一道题目,DP不怎么会的我想到了,大 ...

  6. 【bzoj4720】[NOIP2016]换教室 期望dp

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

  7. 【BZOJ4720】【NOIP2016】换教室 [期望DP]

    换教室 Time Limit: 20 Sec  Memory Limit: 512 MB[Submit][Status][Discuss] Description Input 第一行四个整数n,m,v ...

  8. bzoj4720: [Noip2016]换教室(期望dp)

    4720: [Noip2016]换教室 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 1294  Solved: 698[Submit][Status ...

  9. P1850 换教室 期望dp

    P1850 换教室 题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 2n2n 节课程安排在 nn 个时间段上.在第 ii(1 \leq ...

随机推荐

  1. 20165223 实验三 敏捷开发与XP实践

    目录 一.实验报告封面 二.具体实验内容 (一)敏捷开发与XP实践-1 代码规范格式化 (二)敏捷开发与XP实践-2 添加搭档项目 (三)敏捷开发与XP实践-3 搭档代码重构 (四)敏捷开发与XP实践 ...

  2. Yii2 如何输出 sql 语句?

    可以用 $model->find()->createCommand()->getRawSql(); 不能带 all(). find() 它的 返回值类型是 yii\db\Active ...

  3. Git错误汇总

    Git提示rejected To github.com:zhuxiaoxi/Web-Demo.git ! [rejected] master -> master (fetch first) er ...

  4. php关联Apache和nginx

    编辑apache配置文件httpd.conf,以apache支持php vim /etc/httpd/httpd.conf添加如下二行 AddType application/x-httpd-php ...

  5. 整合shiro出现【Correct the classpath of your application so that it contains a single, compatible version of org.quartz.Scheduler】

    跑的时候出现错误: Description: An attempt was made to call the method org.quartz.Scheduler.getListenerManage ...

  6. 象棋start

    这篇文章其实谈的不是象棋开局,更谈不上开局技巧,举个例子:第一步走炮二平五,也即是中炮局,但中炮局可以根据对手的应对着法演变成很多,比如:五七炮对屏风马,五六炮对屏风马,顺炮局,以及雷公炮等等,这些才 ...

  7. CentOS 7 (Linux) 下载百度网盘大文件

    这个方法不仅适合下载 "百度网盘" 中的文件,还可以下载磁链之类的,总之,就是能够加快下载速度的方法. (参考了网上的多篇文章,自行实践,成功下载度盘大文件,并且提升了下载速度) ...

  8. 递归思维判断数组a[N]是否为一个递增数组

    递归的方法:记录当前最大的,并且判断当前的是否比这个还大,大则继续,否则返回false结束: bool fun( int a[], int n ) { ) { return true; } ) { ] ...

  9. 8款压箱底的Mac屏幕截图和录音录像工具软件,请你务必低调使用

    以下几款是是Mac上优秀的屏幕截图.录像和录音工具,有了这些工具,在Mac上进行截屏.录制视频或者录音都会事半功倍. 1. Snagit Mac上最好用最强大的屏幕截图工具,支持各种方式的屏幕截图以及 ...

  10. Hadoop生态圈-Ambari控制台功能简介

    Hadoop生态圈-Ambari控制台功能简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在经历一系列安装过程之后(部署过HDP后我终于发现为什么大家喜欢用它了,部署比CDH简 ...