【NOIP2016】换教室(DP,期望)】的更多相关文章

状压dp,设f[i][j][0/1]为前i个时间段换了j间教室的期望体力消耗,转移很好想(但是写起来好长= =) #include<iostream> #include<cstdio> using namespace std; const int N=2005; int n,m,v,e,c[N],d[N]; double k[N],f[N][N][2],ans=1e9,a[N][N],z; int read() { int r=0,f=1; char p=getchar(); wh…
流下了不会概率的眼泪,由于不会概率,转移少写了点东西... 这个dp很简单,就是一个普通的线性dp加点期望.(刚开始写这道题时信笔写下) \(dp[0/1][i][j]\)表示到第\(i\)个时间段时,已经申请了换\(j\)门课程的教室,当前申请0不换.1换教室的最小数学期望. 注意,我们的状态定义是申请,而不是已经申请成功,这样定义状态就可以统计出数学期望了. 对于当前状态没申请的情况,如果上一个时间段也没申请,那只有一种可能性发生,即俩状态都没换:如果上一个时间段申请了,那上一个状态就可能没…
Description 题目链接:Luogu Solution 这题结合了DP和概率与期望,其实只要稍微知道什么是期望就可以了, 状态的构造很关键,\(F[i][j][0/1]\)表示已经到第\(i\)个课程,之前用了\(j\)个申请机会,且当前课程是(1)否(0)申请 然后就容易想到转移方程, \(F_{i,j,0}=min\{F_{i-1,j,0}+dis(c_{i-1},c_i),F_{i-1,j,1}+dis(c_{i-1},c_i)*(1-p_{i-1})+dis(d_{i-1},c_…
传送门 一道无脑的期望dp. 用f[i][j][0/1]表示前i堂课提出了j次申请且第i堂课没有(有)提出申请. 这样就可以状态转移了. 然而这题状态转移方程有点长... (主要是情况多... 代码: #include<bits/stdc++.h> #define N 2005 #define P 305 using namespace std; inline int read(){ int ans=0; char ch=getchar(); while(!isdigit(ch))ch=get…
Description 题目链接:Luogu Solution 这题结合了DP和概率与期望,其实只要稍微知道什么是期望就可以了, 状态的构造很关键,\(F[i][j][0/1]\)表示已经到第\(i\)个课程,之前用了\(j\)个申请机会,且当前课程是(1)否(0)申请 然后就容易想到转移方程, \(F_{i,j,0}=min\{F_{i-1,j,0}+dis(c_{i-1},c_i),F_{i-1,j,1}+dis(c_{i-1},c_i)*(1-p_{i-1})+dis(d_{i-1},c_…
[NOIP2016]换教室 D1 T3 Description 对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况中情合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第 i ( 1≤ i≤n)个时同段上, 两节内容相同的课程同时在不同的地点进行, 其中, 牛牛预先被安排在教室 ci上课, 而另一节课程在教室 di进行. 在不提交任何申请的情况下,学生们需要按时间段的顺序依次完成所有的n节安排好的课程.如果学生想更换第i节课程的教室,则需要提出中情.若申请通过,学生…
4720: [Noip2016]换教室 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 1294  Solved: 698[Submit][Status][Discuss] Description 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程.在可以选择的课程中,有2n节 课程安排在n个时间段上.在第i(1≤i≤n)个时间段上,两节内容相同的课程同时在不同的地点进行,其中,牛牛预先 被安排在教室ci上课,而另一节课程在…
4720: [Noip2016]换教室 Description 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程.在可以选择的课程中,有2n节课程安排在n个时间段上.在第i(1≤i≤n)个时间段上,两节内容相同的课程同时在不同的地点进行,其中,牛牛预先被安排在教室ci上课,而另一节课程在教室di进行.在不提交任何申请的情况下,学生们需要按时间段的顺序依次完成所有的n节安排好的课程.如果学生想更换第i节课程的教室,则需要提出申请.若申请通过,学生就可以在第i个时间段去教室…
4720: [Noip2016]换教室 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 1690  Solved: 979[Submit][Status][Discuss] Description 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程.在可以选择的课程中,有2n节 课程安排在n个时间段上.在第i(1≤i≤n)个时间段上,两节内容相同的课程同时在不同的地点进行,其中,牛牛预先 被安排在教室ci上课,而另一节课程在…
2558. [NOIP2016]换教室 [题目描述] 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第i(1<i<n)个时间段上,两节内容相同的课程同时在不同的地点进行,其中,牛牛预先被安排在教室ci上课,而另一节课程在教室di进行. 在不提交任何申请的情况下,学生们需要按时间段的顺序依次完成所有的n节安排好的课程.如果学生想更换第i节课程的教室,则需要提出申请.若申请通过,学生就可以在第i个时间段去教室di…
其实吧我老早就把这题切了--因为说实话,这道题确实不难啊--李云龙:比他娘的状压DP简单多了 今天我翻以前在Luogu上写的题解时,突然发现放错代码了,然后被一堆人\(hack\)--蓝瘦啊\(ORZ\) 嗯,还是有些点需要注意以下的!以下是今年4月写的: \(\mathcal{\color{red}{Description}}\) 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 \(2n\)节课程安排在 \(n\)个时间段上.在第$ i $…
题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程.在可以选择的课程中,有2n节课程安排在n个时间段上.在第i(1≤i≤n)个时间段上,两节内容相同的课程同时在不同的地点进行,其中,牛牛预先被安排在教室ci上课,而另一节课程在教室di进行.在不提交任何申请的情况下,学生们需要按时间段的顺序依次完成所有的n节安排好的课程.如果学生想更换第i节课程的教室,则需要提出申请.若申请通过,学生就可以在第i个时间段去教室di上课,否则仍然在教室ci上课.由于更换教室的需求太…
题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 2n2n 节课程安排在 nn 个时间段上.在第 ii(1 \leq i \leq n1≤i≤n)个时间段上,两节内容相同的课程同时在不同的地点进行,其中,牛牛预先被安排在教室 c_ici​ 上课,而另一节课程在教室 d_idi​ 进行. 在不提交任何申请的情况下,学生们需要按时间段的顺序依次完成所有的 nn 节安排好的课程.如果学生想更换第 ii节课程的教室,则需要提出申请.若申请通过…
[NOIP2016] Day1 T3 换教室 ——!x^n+y^n=z^n 题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 2n 节课程安排在 nn 个时间段上.在第 i(1≤i≤n)个时间段上,两节内容相同的课程同时在不同的地点进行,其中,牛牛预先被安排在教室 ci​ 上课,而另一节课程在教室 di​ 进行. 在不提交任何申请的情况下,学生们需要按时间段的顺序依次完成所有的 n 节安排好的课程.如果学生想更换第 ii 节课程的教室…
啊...这个时间写博客,明天还要上学,整个人都不好了... 这是我写的第一道期望题hiahiahia... 题目大意就不说了QWQ 80分儿做法:先floyd,爆搜枚举哪些点取,求出答案,效率O(C(n,m)*n). 100分:先floyd跑出两两点之间的距离,然后f[i][j][0/1]表示第i个时间,申请了j次换教室,0表示这个时间不申请,1表示这个时间申请,则有: f[i+1][j][0]=min(f[i][j][0]+dis[a[i]][a[i+1]],f[i][j][1]+dis[b[…
题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程.在可以选择的课程中,有2n节课程安排在n个时间段上.在第i(1≤i≤n)个时间段上,两节内容相同的课程同时在不同的地点进行,其中,牛牛预先被安排在教室ci上课,而另一节课程在教室di进行.在不提交任何申请的情况下,学生们需要按时间段的顺序依次完成所有的n节安排好的课程.如果学生想更换第i节课程的教室,则需要提出申请.若申请通过,学生就可以在第i个时间段去教室di上课,否则仍然在教室ci上课.由于更换教室的需求太…
题目类型:期望\(DP\) 传送门:>Here< 题意:现有\(N\)个时间段,每个时间段上一节课.如果不申请换教室,那么时间段\(i\)必须去教室\(c[i]\)上课,如果申请换课成功,那么就可以去教室\(d[i]\)上课.第\(i\)节课申请换教室成功的概率是\(k[i]\).每个教室是无向图的一个节点,从一个教室到另一个教室需要耗费的体力是它们之间的最短路.现在,你最多可以申请换\(M\)节课,问耗费体力值最少的期望 解题思路 题意比较复杂.时间段不如理解为时间点.可以概括为:第\(i\…
BZOJ 4720 换教室 题目描述: 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程.在可以选择的课程中,有2n节 课程安排在n个时间段上.在第i(1≤i≤n)个时间段上,两节内容相同的课程同时在不同的地点进行,其中,牛牛预先 被安排在教室ci上课,而另一节课程在教室di进行.在不提交任何申请的情况下,学生们需要按时间段的顺序依次完 成所有的n节安排好的课程.如果学生想更换第i节课程的教室,则需要提出申请.若申请通过,学生就可以在第i个 时间段去教室di上课,否则仍…
题目 一道毒瘤概率期望DP.点这里 首先 对于每个时间段(就是每节课),我们有申请和不申请两种情况.如果不申请的话,一定在$ c[ i ] \(,否则,可能在\)c[ i ]\(,也可能在\)d[ i ]\(.所以我们先预处理一些东西. 先用弗洛伊德处理出最短路(这就不用详细介绍了吧).我们先考虑相邻的两间教室,如果这两间教室都申请的话,就会有四种情况(①都通过,②都没通过,③第一个通过,④第二个通过)感觉又长又臭.所以我们先处理出两间教室都申请的情况. 用\)a[ i ]$表示在都申请的前提下…
题目背景 NOIP2016 提高组 Day1 T3 题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 2n 节课程安排在 n 个时间段上.在第 i(1≤i≤n)个时间段上,两节内容相同的课程同时在不同的地点进行,其中,牛牛预先被安排在教室 ci 上课,而另一节课程在教室 di 进行. 在不提交任何申请的情况下,学生们需要按时间段的顺序依次完成所有的 n 节安排好的课程.如果学生想更换第 i 节课程的教室,则需要提出申请.若申请通过,学…
Description 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程.在可以选择的课程中,有2n节 课程安排在n个时间段上.在第i(1≤i≤n)个时间段上,两节内容相同的课程同时在不同的地点进行,其中,牛牛预先 被安排在教室ci上课,而另一节课程在教室di进行.在不提交任何申请的情况下,学生们需要按时间段的顺序依次完 成所有的n节安排好的课程.如果学生想更换第i节课程的教室,则需要提出申请.若申请通过,学生就可以在第i个 时间段去教室di上课,否则仍然在教室ci上课…
http://172.20.6.3/Problem_Show.asp?id=1457 我不知道为什么我倒着推期望只有80分,所以我妥协了,我对着题解写了个正的,我有罪. #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<iostream> #include<queue> using namespace std; ; int t…
题目:https://www.luogu.org/problemnew/show/P1850 状态里记录的是”上一回有没有申请“,而不是”上一回申请成功否“,不然“申请 j 次”就没法转移了. double不能memset,所以手动. 别忘了dis[ i ][ i ]=0. 有重边!!!所以读入边的时候取一下min! #include<iostream> #include<cstdio> #include<cstring> #include<algorithm&g…
先弗洛伊德,然后把状态拆分遗传 #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #define f(a,b,c) g[a+10][b+10][c+1] #define N 2100 #define M 320 using namespace std; typedef double D; ]; D g[N][N][]; int n,m,v,e; D w[N]; in…
题目:https://www.luogu.org/problemnew/show/P1850 注释掉了一堆愚蠢,自己还是太嫩了... 首先要注意选或不选是取 min 而不是 /2 ,因为这里的选或不选不是随机的而是取最优的: 然后注意 double 类型不能 memset ,还是要手动赋值: 其实也不算很难,却调了很久... 代码如下: #include<iostream> #include<cstdio> #include<cstring> using namespa…
题目传送门 首先这个题我们一看它就是和概率期望有关,而大多数时候在OI中遇到他们时,都是与dp相关的. \(Vergil\)学长表示,作为\(NOIp2016\)的当事人,他们考前奶联赛一定不会考概率期望,结果...真香!\(qwq\). 不过\(NOIp\)还是对像我这样的菜到不会正解只会写暴力的蒟蒻来说还是很友好的==.据说这题暴力分都拿满有\(80pts+\).作为第三题的分量真的很友好. 暑假学长就是用的这个题给我们讲的二进制枚举.性感学长在线\(debug\). 64分做法: 注意到1…
首先floyd求出每两点间的距离(注意自己到自己的距离要设成0) 然后就是dp了 一开始照着Lifeguards的样子,钦定了一下i这个点一定要选,然后发现复杂度不对,还想了好长时间优化 然后一翻题解,直接两种状态选或不选分开算O(1)转移多好(所以年轻人不要整天满脑子都是钦定钦定的) 但为什么Lifeguards要钦定呢?因为如果你有一个删掉的状态,那我无法确定前面的到底到哪是没删的 那就是$f[i][j][1/0]=max(f[i][j][1/0]+....)$,f[i][j][0/1]是换…
题目链接 又一道面向题解编程的恶心神题.真是叫人质壁分离…… 设f[i][j][k]表示考虑了前i节课,尝试了j次,当前申请结果为k时消耗的体力值. 对于f[i][j][0]有两种情况:一是我们的主角根本没去申请换当前课,二是我们的主角尝试了,但是failed so根据题面有以下几种情况: 1.当前的课不换的情况: (1)上一节课也没换: (2)上一节课换了----成功or不成功: 2.当前的课换的情况: (1)当前课成功换了: a.上一节课换了----上一节课成功or不成功 b.上一节课没换:…
第一次做期望dp 并不知道每个阶段的期望之和就是整个的期望之和 所以一直卡在这 期望=代价*概率 然后注意只有申请了才算期望,否则按原来的. 这道题和前几个课程,申请的限制,当前选或不选,有关 这样很容易写出dp的状态 其实你如果打80分的暴力,会发现把那个暴力记忆化一下 就变成dp,就可以拿满分了, 做题的时候一定要搞清楚每个变量的意义是啥 自己没搞清楚导致数组开小WA两个点 在我的代码中,我在很努力的简化代码了(define) #include<bits/stdc++.h> #define…
题目:https://www.acwing.com/problem/content/235/ 题意:有n个时间段,这个时间段有两个地方授课ci,di,最开始是在ci,可以申请去di,但是是几率的,然后有x个教室,y条道路,还有k个机会申请,可以申请<=k次,最后求怎么样的申请求的期望值最低,求那个最低值 思路:这个题我们首先先求一遍floyd,为了方便后面的操作,我们其实很容易看出这是一个dp,什么可以选k次这些都是惯用套路,这个题其实就只用分两种状态,每个时间段申请或者不申请,所以我们的dp数…