题目:https://www.acwing.com/problem/content/235/

题意:有n个时间段,这个时间段有两个地方授课ci,di,最开始是在ci,可以申请去di,但是是几率的,然后有x个教室,y条道路,还有k个机会申请,可以申请<=k次,最后求怎么样的申请求的期望值最低,求那个最低值

思路:这个题我们首先先求一遍floyd,为了方便后面的操作,我们其实很容易看出这是一个dp,什么可以选k次这些都是惯用套路,这个题其实就只用分两种状态,每个时间段申请或者不申请,所以我们的dp数组就可以写成 dp[i][j][k]    ,i是代表是第几个时间段,j是代表申请了j次,k只有0/1代表申请不申请,最后我们要留意的是,转移方程这里,因为申请是有几率申请成功的,所以我们要考虑是否申请成功,所以要记录两种状态,如果连续两次都申请的话那就要用到乘法原理变成四种情况,然后转移即可

#include<bits/stdc++.h>
#define maxn 100005
#define mod 1000000007
using namespace std;
double p[],f[][],dp[][][];
int a[][],c[],d[];
int main()
{
int n,m,v,e,a1,b1,c1;
cin>>n>>m>>v>>e;
for(int i=;i<=n;i++)scanf("%d",&c[i]);
for(int i=;i<=n;i++)scanf("%d",&d[i]);
for(int i=;i<=n;i++)scanf("%lf",&p[i]); for(int i=;i<=v;i++)
for(int j=;j<i;j++)
f[i][j]=f[j][i]=; for(int i=;i<=e;i++){
scanf("%d%d%d",&a1,&b1,&c1);
f[a1][b1]=f[b1][a1]=min(f[a1][b1],(double)c1);
} for(int k=;k<=v;k++)
for(int i=;i<=v;i++)
for(int j=;j<i;j++)
if(f[i][k]+f[k][j]<f[i][j])
f[i][j]=f[j][i]=f[i][k]+f[k][j]; for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
dp[i][j][]=dp[i][j][]=; dp[][][]=dp[][][]=;
for(int i=;i<=n;i++){
double add1=f[c[i-]][c[i]];
for(int j=;j<=min(m,i);j++)
{
dp[i][j][]=min(dp[i-][j][]+add1,dp[i-][j][]+f[d[i-]][c[i]]*p[i-]+f[c[i-]][c[i]]*(-p[i-]));//不申请 由前面是否申请来推出后面
if(j!=)//乘法原理计算四种情况
dp[i][j][]=min(dp[i-][j-][]+f[c[i-]][d[i]]*p[i]+f[c[i-]][c[i]]*(-p[i]),dp[i-][j-][]+f[c[i-]][c[i]]*(-p[i-])*(-p[i])+f[c[i-]][d[i]]*(-p[i-])*p[i]+f[d[i-]][c[i]]*(-p[i])*p[i-]+f[d[i-]][d[i]]*p[i-]*p[i]);
}
} double hahaha=;
for(int i=;i<=m;i++){
hahaha=min(dp[n][i][],min(dp[n][i][],hahaha));}
printf("%.2lf",hahaha);
}

AcWing 233. 换教室 (期望DP+floyd)打卡的更多相关文章

  1. 换教室(期望+DP)

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

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

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

  3. 【bzoj4720】[Noip2016]换教室 期望dp+最短路

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

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

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

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

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

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

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

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

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

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

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

  9. P1850 换教室 期望dp

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

随机推荐

  1. 「NOI2017」蔬菜 解题报告

    「NOI2017」蔬菜 首先考虑流 可以从 \(s\) 流入表示得到蔬菜,流出到 \(t\) 表示卖出蔬菜,给每个蔬菜拆点,并给它它每天应得的蔬菜. 但是我们没办法直接给,注意到如果把变质看成得到并可 ...

  2. Scrapy模拟登陆豆瓣抓取数据

    scrapy  startproject douban 其中douban是我们的项目名称 2创建爬虫文件 进入到douban 然后创建爬虫文件 scrapy genspider dou douban. ...

  3. python练习题自己实现一个字符串的find函数

    # 第五题:自己实现一个字符串的find函数 # 1.在一个字符串中查找另一个字符串 # 2.找到了返回第一次出现的位置 # 3.没找到返回-1 # 4.参数s1为源字符串,参数s2为要查找的字符串 ...

  4. (转)Java 原子性引用 AtomicReference

    链接:https://www.jianshu.com/p/882d0e2c3ea6 來源:简书  作者:专职跑龙套 AtomicReference An object reference that m ...

  5. 小白学 Python 爬虫(26):为啥上海二手房你都买不起

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  6. xcodebuild自动打包上传到蒲公英的shell脚本

    注意: ExportOptions.plist (包含了证书相关信息) 该plist 文件可以通过xcode手动导出ipa之后获取到, 区分appstore 和 development的情况 #! / ...

  7. Gentoo 搭遗

    安装 app-portage/gentoolkit 使用如下方式,可查询某个被包安装的文件列表,可以筛选文件类型 equey files [--filter=doc] <包名称> emer ...

  8. LoadRunner内部结构(转)

    LoadRunner内部结构 1,            被测系统是由驱动进程mdrv.exe(多线程驱动的进程)和r3vuser.exe来产生压力的,其中r3vuser.exe仿真应用程序的客户端, ...

  9. git update-index --assume-unchanged on directory 转摘自:http://stackoverflow.com/questions/12288212/git-update-index-assume-unchanged-on-directory

    30down votefavorite 16 git 1.7.12 I want to mark all files below a given directory as assume-unchang ...

  10. Educational Codeforces Round 33 D. Credit Card

    Credit Card time limit per test2 seconds memory limit per test256 megabytes Recenlty Luba got a cred ...