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. 【NOIP 模拟赛】钟 模拟+链表

    biubiu~~ 这道题实际上就是优化模拟,就是找到最先死的让他死掉,运用时间上的加速,题解上说,要用堆优化,也就是这个意思. 对于链表,单项链表和循环链表都不常用,最常用的是双向链表,删除和插入比较 ...

  2. 洛谷P1546 最短网络 Agri-Net

    P1546 最短网络 Agri-Net 526通过 959提交 题目提供者JOHNKRAM 标签图论贪心USACO 难度普及/提高- 提交该题 讨论 题解 记录 最新讨论 50分C++代码,求解 请指 ...

  3. [codechef MEXDIV]Mex division

    题目链接:https://vjudge.net/contest/171650#problem/I 直接用set+dp水过去了... /* 设dp[i]表示前i个做划分满足条件的方案数 有一个显然的转移 ...

  4. Codeforces Round #534 (Div. 2) D. Game with modulo(取余性质+二分)

    D. Game with modulo 题目链接:https://codeforces.com/contest/1104/problem/D 题意: 这题是一个交互题,首先一开始会有一个数a,你最终的 ...

  5. STM32 启动代码 bootloader

    什么是启动代码?     启动代码是系统上电或者复位后运行的第一段代码,是进入C 语言的main 函数之前需要执行的那段汇编代码.STM32的启动代码在startup_stm32f10x_hd.s 启 ...

  6. [51nod] 1305 Pairwise Sum and Divide 数学

    有这样一段程序,fun会对整数数组A进行求值,其中Floor表示向下取整:   fun(A)     sum = 0     for i = 1 to A.length         for j = ...

  7. Navicat Premium mysql

    #Sql语句 创建一表格 ),name ),age ),sex )); #添加语句 ,,'男'); ,,'男'); #删除 delete from user3;#user3中所有数据全删 delete ...

  8. [洛谷P3501] [POI2010]ANT-Antisymmetry

    洛谷题目链接:[POI2010]ANT-Antisymmetry 题目描述 Byteasar studies certain strings of zeroes and ones. Let be su ...

  9. Gradle体验/第一篇:下装、安装、配置、体验

    http://jingyan.baidu.com/article/4d58d541167bc69dd4e9c009.html

  10. 游戏中的过程生成——元胞自动机 Celluar Automata 生成洞穴地形

    最近在学习过程生成技术,在这里写一些心得. 对于元胞自动机,我们这里只讨论输入是一副二维bool数组的情况,即大多数游戏中的情况. 一个元胞自动机,对于一个输入,给出一个同样格式的输出.输出中的每个点 ...