期望DP

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cctype> using namespace std; inline int rd(){
int ret=0,f=1;char c;
while(c=getchar(),!isdigit(c))f=c=='-'?-1:1;
while(isdigit(c))ret=ret*10+c-'0',c=getchar();
return ret*f;
} const int MAXN = 2048; int t1[MAXN],t2[MAXN];
double p[MAXN],f[MAXN][MAXN][2],mp[305][305];
int n,m,v,e; void init(){
memset(f,127,sizeof(f));
memset(mp,127,sizeof(mp));
} int main(){
init();
n=rd();m=rd();v=rd();e=rd();
for(int i=1;i<=n;i++)t1[i]=rd();
for(int i=1;i<=n;i++)t2[i]=rd();
for(int i=1;i<=n;i++)scanf("%lf",&p[i]);
int x,y;double w;
for(int i=1;i<=e;i++){
x=rd();y=rd();scanf("%lf",&w);
mp[x][y]=mp[y][x]=min(w,mp[x][y]);
}
for(int i=1;i<=v;i++)mp[i][i]=0;//??!!
for(int k=1;k<=v;k++){
for(int i=1;i<=v;i++){
for(int j=1;j<=v;j++){
mp[i][j]=min(mp[i][j],mp[i][k]+mp[k][j]);
}
}
}
f[1][0][0]=f[1][1][1]=0;
for(int i=2;i<=n;i++){
for(int j=0;j<=m;j++){
//1
f[i][j][0]=min(f[i][j][0],min(
f[i-1][j][0]+mp[t1[i-1]][t1[i]],//上一个不换
f[i-1][j][1]+p[i-1]*mp[t2[i-1]][t1[i]]+(1.0-p[i-1])*mp[t1[i-1]][t1[i]]));//上一个换
//2
if(j==0)continue;
f[i][j][1]=min(f[i][j][1],min(//当前换
f[i-1][j-1][0]+p[i]*mp[t1[i-1]][t2[i]]+(1.0-p[i])*mp[t1[i-1]][t1[i]],//上一个不换
f[i-1][j-1][1]+p[i-1]*p[i]*mp[t2[i-1]][t2[i]]
+p[i-1]*(1.0-p[i])*mp[t2[i-1]][t1[i]]
+(1.0-p[i-1])*p[i]*mp[t1[i-1]][t2[i]]
+(1.0-p[i-1])*(1.0-p[i])*mp[t1[i-1]][t1[i]]));
}
}
double ans=1e9;
for(int j=0;j<=m;j++){
ans=min(ans,min(f[n][j][0],f[n][j][1]));
}
printf("%.2lf",ans);
return 0;
}

[LOJ] #2360. 「NOIP2016」换教室的更多相关文章

  1. LOJ2360. 「NOIP2016」换教室【概率DP】【Floyed】【傻逼题】

    LINK 思路 先floyed出两点最短路 然后就可以直接\(dp_{i,j,0/1}\)表示前i节课选择换j节,换不换当前这一节的最小贡献 直接可以枚举上一次决策的状态计算概率进行统计就可以了 我变 ...

  2. 「NOIP2016」换教室

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

  3. LOJ #2359. 「NOIP2016」天天爱跑步(倍增+线段树合并)

    题意 LOJ #2359. 「NOIP2016」天天爱跑步 题解 考虑把一个玩家的路径 \((x, y)\) 拆成两条,一条是 \(x\) 到 \(lca\) ( \(x, y\) 最近公共祖先) 的 ...

  4. 「NOIP2016」「P1850」 换教室(期望dp

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

  5. [LOJ] #2363「NOIP2016」愤怒的小鸟

    精度卡了一个点,别人自带大常数,我自带大浮点误差qwq. 听了好几遍,一直没动手写一写. f[S]表示S集合中的猪被打死的最少抛物线数,转移时考虑枚举两个点,最低位的0为第一个点,枚举第二个点,构造一 ...

  6. Loj #3045. 「ZJOI2019」开关

    Loj #3045. 「ZJOI2019」开关 题目描述 九条可怜是一个贪玩的女孩子. 这天,她和她的好朋友法海哥哥去玩密室逃脱.在他们面前的是 \(n\) 个开关,开始每个开关都是关闭的状态.要通过 ...

  7. Loj #2192. 「SHOI2014」概率充电器

    Loj #2192. 「SHOI2014」概率充电器 题目描述 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器: 「采用全新纳米级加工技术,实现元件与导线能否通电完 ...

  8. Loj #3096. 「SNOI2019」数论

    Loj #3096. 「SNOI2019」数论 题目描述 给出正整数 \(P, Q, T\),大小为 \(n\) 的整数集 \(A\) 和大小为 \(m\) 的整数集 \(B\),请你求出: \[ \ ...

  9. Loj #3093. 「BJOI2019」光线

    Loj #3093. 「BJOI2019」光线 题目描述 当一束光打到一层玻璃上时,有一定比例的光会穿过这层玻璃,一定比例的光会被反射回去,剩下的光被玻璃吸收. 设对于任意 \(x\),有 \(x\t ...

随机推荐

  1. 有关xerosploit运行报错问题的有效解决方案

    [安装xerosploit]安装xerosploit的步骤如下,我是将xerosploit直接克隆到了根目录下(使用“cd /”到达根目录) git clone https://github.com/ ...

  2. EOS Bios Boot Sequence

    EOS version:v1.0.5 Date:2018-06-19 Host: Centos 7 Reference :https://github.com/EOSIO/eos/wiki/Tutor ...

  3. sublime下Docblocker插件自定义配置

    1.下载安装Docblocker插件 栏目preferences-->Package Control 输入 Docblocker 搜索插件,单击安装 简单使用: 在函数头部输入: /**   按 ...

  4. String 中配置文件详解

    <context:component-scan>使用说明 http://blog.csdn.net/chunqiuwei/article/details/16115135

  5. 关于Nginx对于PHP支持的问题

    因为使用的mediawiki是用php写的,所以就遇上了一个问题,怎么让Nginx支持php,记得当时使用apache2的时候是安装了一个叫 “ libapache2-mod-php5 ”的mod , ...

  6. NPOI导出EXCEL后公式无结果,公式重新计算开关

    但其实这个选项是可以控制的.在NPOI中,这个属性叫做XSSFSheet.ForceFormulaRecalculation. 打开该选项的话,代码为 sheet1.ForceFormulaRecal ...

  7. cachecloud:Redis云管理平台

    https://github.com/sohutv/cachecloud 一.CacheCloud是做什么的 CacheCloud提供一个Redis云管理平台:实现多种类型(Redis Standal ...

  8. left join \ right join \ inner join 详解

    left join 和 left outer join 的区别 通俗的讲:   A   left   join   B   的连接的记录数与A表的记录数同   A   right   join   B ...

  9. JAVA基础之File类

    个人理解: File是个文件类,可以用其增加.删除.查找某种类型的文件或者文件夹,同时根据其成员变量的特点可以综合利用,避免出现跨系统的时候出现错误,并且查找时最好输入绝对路径,以免出现不存在的文件. ...

  10. CSS中的定位机制

    CSS3 中有三种定位机制 : 普通文档流 (text)| 浮动(float) | 定位(position) 普通文档流 就是CSS中默认的文本文档 普通流中,元素位置由文档顺序和元素性质决定,块级元 ...