第一次做期望dp

并不知道每个阶段的期望之和就是整个的期望之和

所以一直卡在这

期望=代价*概率

然后注意只有申请了才算期望,否则按原来的。

这道题和前几个课程,申请的限制,当前选或不选,有关

这样很容易写出dp的状态

其实你如果打80分的暴力,会发现把那个暴力记忆化一下

就变成dp,就可以拿满分了,

做题的时候一定要搞清楚每个变量的意义是啥

自己没搞清楚导致数组开小WA两个点

在我的代码中,我在很努力的简化代码了(define)

#include<bits/stdc++.h>
#define down(a, b) a = min(a, b)
#define d(u, v) a[c[i-1][u]][c[i][v]]
#define val(u, v) d(u, v) * (!u ? (1 - k[i-1]) : k[i-1]) * (!v ? (1 - k[i]) : k[i])
#define REP(i, a, b) for(register int i = (a); i < (b); i++)
#define _for(i, a, b) for(register int i = (a); i <= (b); i++)
using namespace std; const int MAXN = 2e3 + ;
const int MAXM = + ;
double k[MAXN], dp[MAXN][MAXN][];
int a[MAXM][MAXM], n, m, v, e;
int c[MAXN][]; int main()
{
scanf("%d%d%d%d", &n, &m, &v, &e);
_for(i, , n) scanf("%d", &c[i][]);
_for(i, , n) scanf("%d", &c[i][]);
_for(i, , n) scanf("%lf", &k[i]); memset(a, 0x3f, sizeof(a));
_for(i, , v) a[i][i] = ;
_for(i, , e)
{
int u, v, w;
scanf("%d%d%d", &u, &v, &w);
a[u][v] = a[v][u] = min(a[u][v], w);
} _for(K, , v)
_for(i, , v)
_for(j, , v)
a[i][j] = min(a[i][j], a[i][K] + a[K][j]); memset(dp, 0x43, sizeof(dp));
dp[][][] = dp[][][] = ;
_for(i, , n)
_for(j, , m)
{
down(dp[i][j][], dp[i-][j][] + d(, ));
down(dp[i][j][], dp[i-][j][] + d(, ) * k[i-] + d(, ) * ( - k[i-]));
if(j) down(dp[i][j][], dp[i-][j-][] + d(, ) * k[i] + d(, ) * ( - k[i]));
if(j) down(dp[i][j][], dp[i-][j-][] + val(, ) + val(, ) + val(, ) + val(, ));
} double ans = 1e17;
_for(i, , m) down(ans, min(dp[n][i][], dp[n][i][]));
printf("%.2lf\n", ans); return ;
}

NOIP 2016 换教室(期望dp)的更多相关文章

  1. 换教室(期望+DP)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. P1850 换教室 期望dp

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

随机推荐

  1. URAL 1196. History Exam (二分)

    1196. History Exam Time limit: 1.5 second Memory limit: 64 MB Professor of history decided to simpli ...

  2. sharepoint类型转换

    sharepoint学习汇总 http://blog.csdn.net/qq873113580/article/details/20390149 r[col.ColumnName] = GetType ...

  3. curses-键盘编码-openssl加解密【转】

    本文转载自;https://zhuanlan.zhihu.com/p/26164115 1.1 键盘编码 按键过程:当用户按下某个键时, 1.键盘会检测到这个动作,并通过键盘控制器把扫描码(scan ...

  4. selenium3 + python - select定位

    一.Select模块(index)     1.导入Select模块.直接根据属性或索引定位     2.先要导入select方法:from selenium.webdriver.support.se ...

  5. Python 36 GIL全局解释器锁 、vs自定义互斥锁

    一:GIL全局解释器锁介绍 在CPython中,全局解释器锁(或GIL)是一个互斥锁, 它阻止多个本机线程同时执行Python字节码.译文:之所以需要这个锁, 主要是因为CPython的内存管理不是线 ...

  6. python 关于文件操作的一些理解

    在用python进行数据处理编程中,往往涉及到文件IO口读写,IO口的读写性能会极大的影响程序的运行时间.在进行文件写入时,一般会存在两种情况.第一种是数据到来马上进行数据写入,即来一条写一条,第二种 ...

  7. F - Modular Exponentiation

    Problem description The following problem is well-known: given integers n and m, calculate 2n mod m, ...

  8. C - Stones on the Table

    Problem description There are n stones on the table in a row, each of them can be red, green or blue ...

  9. html中<a>标签_top和_parent的区别

    在html中,<a>标签有个target属性,而targe属性有四个值,分别是:_blank._self._top._parent.前两个相信很好理解,第一个就是在新窗口中打开的意思,第二 ...

  10. Spring Boot (17) 发送邮件

    添加依赖 <!--发送邮件 --> <dependency> <groupId>org.springframework.boot</groupId> & ...