Link:

BZOJ 4720 传送门

Solution:

2016年$NOIP$考的一道语文题

题面虽长,但思路并不难想

对于这类期望问题,大多数时候都用期望$dp$来解决

根据询问:在$n$个时间段中有$m$段可以申请调换时的最小期望值

我们可以设$dp[i][j][0/1]$表示前$i$段中有$j$段申请了且第$i$段是/否申请时的最小期望值

这样在用$floyd$求完多源最短路后大力推公式就好了

能这样$dp$的可行性在于期望的可加性每一段期望距离相加就是最终的期望值

Tip:

1、$dp$设置状态时一般都要留出一维记录当前最末位的状态

2、犯的丝帛错误:$double$不能用$0x3f$初始化!

Code:

#include <bits/stdc++.h>

using namespace std;
const int MAXN=,INF=<<;
int n,m,v,e,c[MAXN][],d[][];
double dp[MAXN][MAXN][],p[MAXN]; int main()
{
scanf("%d%d%d%d",&n,&m,&v,&e);
for(int i=;i<=n;i++) scanf("%d",&c[i][]);
for(int i=;i<=n;i++) scanf("%d",&c[i][]);
for(int i=;i<=n;i++) scanf("%lf",&p[i]);
memset(d,0x3f,sizeof(d));
for(int i=;i<=e;i++)
{
int x,y,w;scanf("%d%d%d",&x,&y,&w);
d[x][y]=d[y][x]=min(d[x][y],w);
} for(int i=;i<=v;i++) d[i][i]=;
for(int k=;k<=v;k++)
for(int i=;i<=v;i++)
for(int j=;j<=v;j++)
d[i][j]=min(d[i][j],d[i][k]+d[k][j]); for(int i=;i<=n;i++) //double不能使用0x3f初始化
for(int j=;j<=m;j++)
dp[i][j][]=dp[i][j][]=INF;
dp[][][]=dp[][][]=;
for(int i=;i<=n;i++)
for(int j=;j<=min(i,m);j++)
{
dp[i][j][]=dp[i-][j][]+d[c[i-][]][c[i][]];
dp[i][j][]=min(dp[i][j][],dp[i-][j][]+p[i-]*d[c[i-][]][c[i][]]+(1.0-p[i-])*d[c[i-][]][c[i][]]);
if(j>=)
dp[i][j][]=min(dp[i][j][],dp[i-][j-][]+p[i]*d[c[i-][]][c[i][]]+(1.0-p[i])*d[c[i-][]][c[i][]]),
dp[i][j][]=min(dp[i][j][],dp[i-][j-][]+p[i]*p[i-]*d[c[i-][]][c[i][]]+p[i]*(-p[i-])*d[c[i-][]][c[i][]]+(1.0-p[i])*p[i-]*d[c[i-][]][c[i][]]+(1.0-p[i])*(1.0-p[i-])*d[c[i-][]][c[i][]]);
} double res=1e20;
for(int i=;i<=m;i++)
res=min(res,min(dp[n][i][],dp[n][i][]));
printf("%.2lf",res);
return ;
}

[BZOJ 4720] 换教室的更多相关文章

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

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

  2. NOIP2016换教室 BZOJ 4720

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

  3. [BZOJ 4720][NOIP 2016] 换教室

    记得某dalao立了"联赛要是考概率期望我直播吃键盘"的$flag$然后就有了这道题233333 4720: [Noip2016]换教室 Time Limit: 20 Sec  M ...

  4. BZOJ 4720 [Noip2016]换教室

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

  5. 【BZOJ】4720: [Noip2016]换教室

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

  6. 换教室(bzoj 4720)

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

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

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

  8. 【bzoj4720】[NOIP2016]换教室

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

  9. [NOIP2016]换教室 D1 T3 Floyed+期望DP

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

随机推荐

  1. MySQL DELAY_KEY_WRITE Option

    delay_key_write   This option applies only to MyISAM tables. It can have one of the following values ...

  2. Create a conditional DNS forwarder on our domain.com to Amazon default DNS provider

    Backgroup: I have an AWS Managed Active Directory(domain.com). I created a DHCP options set  to my d ...

  3. Kafka自我学习3-Scalable

    1.After created the zookeeper cluster, we found all broker cluster topic can be find in zoo1, zoo2, ...

  4. js介绍自己的例子

    js并不是真正面向对象的语言,但是我们通过一些方法也是可以实现js的一些面向对象设计的.常见的构造函数有很多模式有构造函数模式,原型链,工厂模式等等.但就是因为,我初学者看起来非常吃力,理解起来都是很 ...

  5. netty的Udp单播、组播、广播实例+Java的Udp单播、组播、广播实例

    网络上缺乏netty的udp的单播.组播案例,经过一番学习总结之后终于把这两个案例调通,下面把这两个案例的代码放在这里分享一下. 首先推荐博文: http://colobu.com/2014/10/2 ...

  6. 动态规划:DAG-嵌套矩形

    据说DAG是动态规划的基础,想一想还真的是这样的,动态规划的所有状态和转移都可以归约成DAG DAG有两个典型模型,一个是嵌套矩形问题一个是硬币问题,这里仅介绍一个嵌套矩形问题 等二轮复习的时候再补上 ...

  7. bzoj1578 [Usaco2009 Feb]Stock Market 股票市场

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1578 [题解] 由于连续买相当于每天买,第二天卖,然后再买.所以每天最后钱尽量多一定是最优的 ...

  8. [BZOJ1040] [ZJOI2008]骑士 解题报告

    Description Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬.最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战火 ...

  9. .NET中zip的压缩和解压

    在.NET可以通过多种方式实现zip的压缩和解压:1.使用System.IO.Packaging:2.使用第三方类库:3.通过 System.IO.Compression 命名空间中新增的ZipArc ...

  10. Emmet 也有快速生成文件头的功能

    输入下边加粗的缩写,然后Tab,就OK了http://docs.emmet.io/cheat-sheet/ html:4t <!DOCTYPE HTML PUBLIC "-//W3C/ ...