NOIP 2016 换教室(期望dp)
第一次做期望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)的更多相关文章
- 换教室(期望+DP)
换教室(期望+DP) \(dp(i,j,1/0)\)表示第\(i\)节课,申请了\(j\)次调换,这节课\(1/0\)调换. 换教室 转移的时候考虑: 上次没申请 这次也没申请 加上\(dis(fr[ ...
- 【bzoj4720】[Noip2016]换教室 期望dp+最短路
Description 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程.在可以选择的课程中,有2n节 课程安排在n个时间段上.在第i(1≤i≤n)个时间段上,两节内容相同的 ...
- Bzoj 4720 换教室 (期望DP)
刚发现Bzoj有Noip的题目,只会换教室这道题..... Bzoj 题面:Bzoj 4720 Luogu题目:P1850 换教室 大概是期望DPNoip极其友好的一道题目,DP不怎么会的我想到了,大 ...
- [BZOJ 4720][NOIP 2016] 换教室
记得某dalao立了"联赛要是考概率期望我直播吃键盘"的$flag$然后就有了这道题233333 4720: [Noip2016]换教室 Time Limit: 20 Sec M ...
- 【bzoj4720】[NOIP2016]换教室 期望dp
题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程.在可以选择的课程中,有2n节课程安排在n个时间段上.在第i(1≤i≤n)个时间段上,两节内容相同的课程同时在不同的 ...
- 【BZOJ4720】【NOIP2016】换教室 [期望DP]
换教室 Time Limit: 20 Sec Memory Limit: 512 MB[Submit][Status][Discuss] Description Input 第一行四个整数n,m,v ...
- bzoj4720: [Noip2016]换教室(期望dp)
4720: [Noip2016]换教室 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1294 Solved: 698[Submit][Status ...
- Luogu P1850 换教室(期望dp)
P1850 换教室 题意 题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有\(2n\)节课程安排在\(n\)个时间段上.在第\(i(1\l ...
- P1850 换教室 期望dp
P1850 换教室 题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 2n2n 节课程安排在 nn 个时间段上.在第 ii(1 \leq ...
随机推荐
- C语言之基本算法40—字符串删除元音字母倒序输出
//字符串,数组 /* ================================================================== 题目: 输入一行字符,将辅音字母按反序输出 ...
- [LeetCode][Java] Minimum Depth of Binary Tree
题目: Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the ...
- 新随笔(三)什么时候使用button,什么时候使用文字链接
新随笔(三)什么时候使用button.什么时候使用文字链接 你为什么在这个地方用button而不用文字链接呢? 这是刚才我问一个设计师的问题. 她抬头看我,眼神迷茫.说:"没什么为什么呀,我 ...
- ORA-24247: 网络訪问被訪问控制列表 (ACL) 拒绝
ORA-24247: 网络訪问被訪问控制列表 (ACL) 拒绝 注意:须要在system用户下使用命令 须要先使用 DBMS_NETWORK_ACL_ADMIN.CREATE_ACL 创建訪问控 ...
- 杂项:Web API
ylbtech-杂项:Web API 今天的web计算平台包含了广泛的功能,其中的大部分均可以通过API(应用程序编程接口)访问. 从简单的社会书签服务del.icio.us,到复杂得多的amazon ...
- JavaI/O 系统
1.JavaI/O 系统概述 A. 输入输出(I/O):指的是计算机与外部世界,或者一个程序与计算机的其余部分之间的接口 B. 流的概念(流:Stream) 流的基本特性:有数据.有方向 2. 流的 ...
- Coursera Algorithms week3 归并排序 练习测验: Counting inversions
题目原文: An inversion in an array a[] is a pair of entries a[i] and a[j] such that i<j but a[i]>a ...
- 原生JS---3
原生js学习笔记3——数组 定义数组 两种方式定义一个数组: 1. var array1 = new array(1, 2, 3, 4); 2. var array2 = [1, 2, 3, 4]; ...
- Python迭代器(斐波拉切数列实例)
将一个容器通过iter()函数处理后,就变成了迭代器.迭代器有2个魔法方法__iter__.__next__,一个迭代器必须实现__iter__,这个方法实际上是返回迭代器本身(return self ...
- HDU 1166 线段树模板&树状数组模板
HDU1166 上好的线段树模板&&树状数组模板 自己写的第一棵线段树&第一棵树状数组 莫名的兴奋 线段树: #include <cstdio> using nam ...