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. Tourists——圆方树

    CF487E Tourists 一般图,带修求所有简单路径代价. 简单路径,不能经过同一个点两次,那么每个V-DCC出去就不能再回来了. 所以可以圆方树,然后方点维护一下V-DCC内的最小值. 那么, ...

  2. POJ3020:Antenna Placement(二分图匹配)

    Antnna Placement Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11093   Accepted: 5459 ...

  3. jquery学习总计

    1,jquery的基础语法 $(selector).action(); 选择器(selector)查询和查找html元素,action()执行对函数的操作. 2.选择器 id,类,类型,属性,属性值等 ...

  4. java迭代map

    java迭代map: import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.ut ...

  5. 图论:Stoer-Wagner算法

    利用Stoer-Wagner算法求无向图最小割 直接给出算法描述和过程实现: 算法步骤: . 设最小割cut=INF, 任选一个点s到集合A中, 定义W(A, p)为A中的所有点到A外一点p的权总和. ...

  6. bzoj4602 [Sdoi2016]齿轮

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4602 [题解] 对于每组齿轮(u, v)连边,权值为y/x(反向边x/y) 那么直接dfs计 ...

  7. 密码字典生成工具crunch的简单使用

      案例1: crunch 1 8 #生成最小1位,最大8位,由26个小写字母为元素的所有组合   案例2: crunch 1 6 abcdefg #生成最小为1,最大为6.由abcdefg为元素的所 ...

  8. python基础===map和zip的用法

    >>> list1=[1,45,232,45,666,64] >>> list2=["ss","kein","to ...

  9. 【转】java中的集合和数组

    转载自:http://www.cnblogs.com/summers/p/4094260.html 数组Array和集合的区别: (1)数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型 ...

  10. 推荐下载App,如果本地安装则直接打开本地App(Android/IOS)

    推荐下载App,如果本地安装则直接打开本地App(Android/IOS) - 纵观现在每家移动网站,打开首页的时候,都有各种各样的形式来提示你下载自身的移动App(Android/IOS),这是做移 ...