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. pmap用法小计

    By francis_hao    Aug 4,2017   pmap-报告进程的内存映射.   概要 pmap [options] pid [...]   描述 pmap命令用来报告一个或多个进程的 ...

  2. Intellij Idea debug 远程部署的的tomcat项目

    web项目部署到tomcat上之后,有时需要打断点单步调试,如果用的是Intellij idea,可以通过如下方法实现: 开启debug端口,启动tomcat 以tomcat7.0.75为例,打开bi ...

  3. LwIP - 打开keepalive功能

    在服务器端打开keepalive功能 1.保证LWIP_TCP_KEEPALIVE被定义为1,(这样TCP_KEEPIDLE.TCP_KEEPINTVL和TCP_KEEPCNT 设置才有效) 2. i ...

  4. 更改win10和mint双系统默认启动顺序

    更改win7 & Linuxmint双系统安装后更改默认启动顺序 1.打开一个term,编辑/etc/default/grub,即sudo nano /etc/default/grub,把se ...

  5. python中orm框架学习

    安装sqlalchemy pip3 install sqlalchemy 创建表结构: from sqlalchemy import Column,String,create_engine from ...

  6. 【BZOJ3700】发展城市 [LCA][RMQ]

    发展城市 Time Limit: 20 Sec  Memory Limit: 512 MB[Submit][Status][Discuss] Description 众所周知,Hzwer学长是一名高富 ...

  7. 【BZOJ】1596: [Usaco2008 Jan]电话网络

    [算法]树上贪心 [题解] 因为一个点必须被覆盖,那么它如果没有被子树节点覆盖的话,就覆盖它的父节点. 从叶子开始贪心. 注意,如果它自己已经被选了就不需要选父节点了. #include<cst ...

  8. [bzoj1031][JSOI2007]字符加密Cipher——后缀数组

    Brief Description 给定一个长度为n的字符串,你需要对其进行加密. 把字符串围成一个环 显然从任意一个位置开始都可以有一个长度为n的串 把产生的n个串按字典序排序,把这n个串的最后一个 ...

  9. wikioi 1245最小的N个和

    2013-09-08 10:12 LRJ的算法竞赛入门经典训练指南里有类似的题,原题要难很多,p189页 读入A,B两组中的所有数后,建立N个有序表: A1+B1<A2+B1<A3+B1& ...

  10. web前端 html基础2

    表单标签<form></form> input系列标签 text 文本输入框 placeholder 默认的属性,输入时消失 password 密码输入框 radio 单选框 ...