【NOIP2016提高】洛谷1850 换教室题解(概率期望+DP)

概率DP 首先 注意! 正向推概率,反向推期望 先介绍两个高中学的知识 独立实验+几何分布 独立实验 戳这里 几何分布 在第n次伯努利试验中,试验k次才得到第一次成功的机率,详细的说是:前k-1次皆失败,第k次成功的概率。如果事件发生的概率是p,则不发生的概率q=1-p,则P(ξ=K) = 。具有这种分布列的随机变量,称为服从参数p的几何分布。 (1)几何分布的期望E(X)= 1/p ;... 阅读详情

题目:luogu1850.
题目大意:给定 v v v个教室,教室之间有 e e e条无向边边,保证连通.现在有 n n n组教室,每组有一个被钦定的教室和一个可以替换的教室,现在给你 m m m次替换教室的机会,以及当你打算替换掉一组教室时成功的概率,让你求最后依次经过你选择的教室的期望路径最小值.
1 ≤ v ≤ 300 , 1 ≤ n , m ≤ 2000 1\leq v\leq 300,1\leq n,m\leq 2000 1≤v≤300,1≤n,m≤2000.

我觉得我的题目大意好像解释得不是很清晰…

模拟赛考真题的时候由于我没有写过概率DP,然后一直调这道题调了3h,T2部分分一点都没拿…

现在突然发现自己列的状态貌似不太主流,然后写的方式又细节极多,而且还是在我迷了很久期望的定义的情况写的…

我们现在来详解这道题.

首先我在考场列的状态是 f [ i ] [ j ] [ k ] f[i][j][k] f[i][j][k]表示到第 i i i个时段,用掉了 j j j次机会,是否成功换掉了第 j j j组教室的期望.

这个状态实际上是错误的,因为这个状态它已知是否申请成功,而题目上说是一次性提交的,说明不知道是否申请成功.

然后我们会发现这个东西列出方程后细节比较多,我们换一种转态.

我们依然设状态 f [ i ] [ j ] [ k ] f[i][j][k] f[i][j][k],但这是 k k k表示的是否申请去换第 j j j组教室.

那么容易列出方程,不过方程太长这里就不列出了.

当 i = j = 0 i=j=0 i=j=0时是要特殊处理的, j > 0 j>0 j>0时 f [ i ] [ j ] [ 1 ] f[i][j][1] f[i][j][1]时没有意义的,所以要判断.

代码如下:

#include<bits/stdc++.h>
  using namespace std;
#define Abigail inline void
typedef long long LL;
const int N=2000,V=300,INF=1<<29;
int dis[V+9][V+9];
int c[N+9],d[N+9];
double k[N+9],f[N+9][N+9][2],ans=INF*1.0;
int n,m,v,e;
void floyd(){
  for (int k=1;k<=v;k++)
    for (int i=1;i<=v;i++)
      for (int j=1;j<=v;j++)
        dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
}
Abigail into(){
  scanf("%d%d%d%d",&n,&m,&v,&e);
  for (int i=1;i<=n;i++) scanf("%d",&c[i]);
  for (int i=1;i<=n;i++) scanf("%d",&d[i]);
  for (int i=1;i<=n;i++) scanf("%lf",&k[i]);
  for (int i=1;i<=v;i++)
    for (int j=1;j<=v;j++)
      if (i^j) dis[i][j]=INF;
  int x,y,z;
  for (int i=1;i<=e;i++){
    scanf("%d%d%d",&x,&y,&z);
    if (dis[x][y]<=z) continue;
    dis[x][y]=dis[y][x]=z;
  }
}
Abigail work(){
  floyd();
  for (int i=0;i<=n;i++)
    for (int j=0;j<=m;j++)
      f[i][j][0]=f[i][j][1]=INF*1.0;
  f[1][0][0]=0;f[1][1][1]=0;
  for (int i=2;i<=n;i++){
    f[i][0][0]=f[i-1][0][0]+dis[c[i-1]][c[i]];
    for (int j=1;j<=m;j++){
      f[i][j][0]=min(f[i][j][0],f[i-1][j][0]+dis[c[i-1]][c[i]]);
      f[i][j][0]=min(f[i][j][0],f[i-1][j][1]+dis[c[i-1]][c[i]]*(1-k[i-1])+dis[d[i-1]][c[i]]*k[i-1]);
      if (j>0) f[i][j][1]=min(f[i][j][1],f[i-1][j-1][0]+dis[c[i-1]][c[i]]*(1-k[i])+dis[c[i-1]][d[i]]*k[i]);
      if (j>0) f[i][j][1]=min(f[i][j][1],f[i-1][j-1][1]+dis[c[i-1]][c[i]]*(1-k[i-1])*(1-k[i])+dis[c[i-1]][d[i]]*(1-k[i-1])*k[i]+dis[d[i-1]][c[i]]*k[i-1]*(1-k[i])+dis[d[i-1]][d[i]]*k[i-1]*k[i]);
    }
  }
  for (int i=0;i<=m;i++)
    ans=min(ans,min(f[n][i][0],f[n][i][1]));
}
Abigail outo(){
  printf("%.2lf\n",ans);
}
int main(){
  into();
  work();
  outo();
  return 0;
}
题解:洛谷 P1850 [NOIP 2016 提高组] 换教室 现在牛牛想知道,申请哪几门课程可以使他因在教室间移动耗费的体力值的总和的期望值最小,请你帮他求出这个最小值。因为不同的课程可能会被安排在不同的教室进行,所以牛牛需要利用课间时间从一间教室赶到另一间教室。)节课结束后,牛牛就会从这节课的教室出发,选择一条耗费体力最少的路径前往下一节课的教室。)个时间段上,两节内容相同的课程同时在不同的地点进行,其中,牛牛预先被安排在教室。节课程的教室,则需要提出申请。节课程的教室时,申请被通过的概率是一个已知的实数。,并且对于不同课程的申请,被通过的概率是互相独立的。 阅读详情

相关推荐

xlinx项目系列之基于zynq-7020ISP图像处理

本Demo基于zynq-7020(正点原子启明星+OV5640+4.3'800x480)实现了ISP图像处理(将ov5640的isp关闭,在7020上实现ISP功能),输出到LCD和HDMI,软件基于SDK裸机开发,2592x1944@15fp。位置: xil_ip_repo/xil_isp_lite_1.0。项目获取链接:2.基于zynq-7020实现ISP图像处理。位置: xil_ip_repo/xil_vip_1.0。

JY6669991010的博客 2635

洛谷p2059 概率dp

首先仔细读题目 按顺时针从庄家位置数第X个人将被处决即退出游戏, x为1的时候被处决的就是庄家,千万不要理解错位庄家的位置+x就是被处决人的位置,我一开始就是这么理解然后调完发现怎么加起来答案是1但是和样例长的不一样 我们思考下怎么做,对于如此小的数据范围,肯定是可以枚举每一次游戏某一个人获得胜利的概率,如果比如数据范围偏大,那就dp的设计就要去想一次dp得全部答案的方法,要有这个设计方程前的理性...

塞满箱子的过程 430

VSCode 1.85便携版安装与配置:解决远程服务器glibc版本过低报错的保姆级指南

本文详细介绍了如何通过VSCode 1.85便携版解决远程服务器glibc版本过低导致的兼容性问题。通过环境隔离和版本固化的方法,开发者可以在老旧服务器上稳定运行Remote-SSH插件,同时保留主力VSCode的配置。文章提供了从下载安装到深度配置的完整指南,帮助用户快速搭建稳定的开发环境。

weixin_30279315的博客 576

P1850 [NOIP2016 提高组] 换教室

思路:期望dp,首先用floyd算法枚举每个点作为拐点,求出每两间教室之间的最短距离,然后设置状态dp[i][j][k]表示上了i节课换了j次教室,k表示当前课换没换教室,在转移时,如果当前课没换,只要考虑前一节课有没有换,换了有没有成功,如果当前课换了教室,要考虑上一节课换没换,换了成没成功和当前课成没成功。题目大意:学校有v个教室,要上n节课,学校里有e条道路连接教室,每节课还有一个可以替换的教室,并且有ki的概率替换原有教室,现有m次申请替换教室的机会,问经过的路径的期望的最小值。...

ashbringer233的博客 491

零代码做游戏:AI辅助开发HTML5网页小游戏从创意到发布全流程

在软件开发领域,自然语言编程正成为一种新兴的人机协作方式,而AI辅助开发则是其最典型的落地形态。它让开发者无需精通语法,只需用清晰的语言描述游戏规则与交互逻辑,AI便能自动生成可运行的代码。这种模式大幅降低了编程门槛,尤其适合快速验证创意、制作原型。对于HTML5网页游戏而言,借助AI生成单个HTML文件,配合在线运行环境,即可在浏览器中直接试玩、迭代与分享。无论是产品经理验证玩法、运营人员制作互动小游戏,还是教育者设计课堂闯关,都能通过自然语言描述需求,让AI完成代码实现与报错修复。本文完整记录了一个“接

weixin_31497453的博客 329

雷达原理习题答案【西电】

  目前教材用的是陈老师新版的,但是,我发现课后题有一部分是之前某本书里的。答案如下【建议参看原题→查阅答案】 【原题点这里!!点这里!!】 目录跳转功能目前好像只支持网页版 文章目录% 第一章、第二章% 第三章% 第四章% 第五章% 第六章% 第七章% 第八章 % 第一章、第二章 % 第三章 % 第四章 % 第五章 % 第六章 % 第七章 % 第八章 ...

薛定谔的壳的博客 1万+

洛谷P1850 NOIP2016 提高组 换教室

#include<iostream> #include<cstdio> #include<cstring> using namespace std; typedef long long ll; typedef long double ld; const ll N=5e3,V=1e3; ll n,m,t,e; ll room[N][2],dis[V][V]; ld pro[N],f[N][N]; int main() { scanf("%lld%lld%lld%lld",

群山中的菜鸡 183

Codex App 远程 SSH 连接 autodl 配置全攻略

SSH 远程连接是开发中常用的技术,通过加密通道实现本地与远程服务器的安全通信。其原理基于非对称加密和密钥对认证,确保数据传输安全。在 AI 开发场景中,远程连接能充分利用云端 GPU 算力,同时保留本地编辑器的流畅体验。autodl 作为主流算力云平台,支持通过 SSH 接入实例,但 Codex App 等工具需额外配置。本文详细讲解如何获取 autodl 的 SSH 接入信息、配置密钥登录、填写 Codex App 远程连接参数,并解决连接拒绝、权限报错等常见问题,帮助开发者高效搭建远程开发环境。

weixin_28312391的博客 257

[洛谷P1850]换教室 概率与期望

要分清哪些状态是独立的,哪些状态对期望有影响 一开始傻傻的在通过和没通过之间取min…… 事实上,在求期望的前提下,真正影响的决策是是否申请 以及万万没想到Floyd打次了 map[i][i] = 0才对发现当前时间段的状态仅仅与上一时间段的状态有关 然后上一时间段的情况(未完,放学了)#include<iostream> #include<cstdio> #include<cstring

LOI_pingxing的博客 485

UDF学习(四)FLUENT UDF-DEFINE_PROFILE宏

利用DEFINE_PROFLILE可以指定以下边界或计算域信息:DEFINE_PROFILE(name,t,i)//既可以用。

weixin_44386973的博客 1806

FISCO BCOS 三、多群组部署以及新节点加入群组

本章主要以星形组网和并行多组组网拓扑为例,指导您了解如下内容:了解如何使用创建多群组区块链安装包;了解创建的多群组区块链安装包目录组织形式;学习如何启动该区块链节点,并通过日志查看各群组共识状态;学习如何向各群组发送交易,并通过日志查看群组出块状态;了解群组内节点管理,包括节点入网、退网等;了解如何新建群组。

qq_63235624的博客 2919

【题解】P1850 [NOIP2016 提高组] 换教室(组合数学,概率,期望)

【题解】P1850 [NOIP2016 提高组] 换教室 大概是我做的第一道概率期望 DP。 题目链接 P1850 [NOIP2016 提高组] 换教室 思路分析 根据题意。 用 \(dp_{i,j}\) 表示走到了第 \(i\) 个教室,当前换了 \(j\) 次的方案数。 考虑转移。 发现转移不仅仅与 \(i\) 和 \(j\) 有关,还跟一个状态有关:当前这个教室换还是没有换。 所以我...

m0_46222454的博客 276

ComfyUI报错ModuleNotFoundError: No module named ‘comfy.options‘

好家伙,我一想我刚刚好像用了pip安装了comfy模块,不会是和ComfyUI自带的comfy模块产生冲突了吧。(3)还有的说是项目不是最新版,叫更新到最新版本的,好家伙,我报错之前根本没更新也没错,突然就报错的。(4)还有的说没有comfy.options这部分代码,叫自己去拉一个,我一看也有啊。我也不知道啥时候脑抽风去装这么个东西的,幸好我聪明机智,一眼就知道了。看把我气的,然后网上搜集各种资料,一个一个去试。

满目星辰 5156

洛谷 P1850 [NOIP 2016 提高组] 换教室

终于自己想出概率期望dpdpdp的状态了,但是依旧没能相对转移方程。(招笑)

m0_72761451的博客 1323

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【NOIP2016提高组】换教室

https://www.luogu.org/problem/show?pid=1850 题面很长,实质很水的一道期望DP题。题面自带劝退效果。 首先用Floyd算出任意两点的最短路径。然后设f(i,j,0)为前i节课申请更换j节,且不申请第i节时的最小期望;设f(i,j,1)前i节课申请更换j节,且申请第i节时的最小期望。可得下面这个超长的状转方程:f(i,j,0)=min{ ...

anlongshi2245的博客 145

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

洛谷 P1850 [NOIP2016 提高组] 换教室【期望DP】

题目链接 题意: 牛牛要上 nnn 节课,第 iii 节课在第 cic_ici​ 个教室,牛牛有 mmm 次机会申请吧教室 cic_ici​ 换成 did_idi​,每节课的申请有 did_idi​ 的概率被接受,教室一共有vvv 个,给出 eee 条无向边连接两个教室,每条边有个正整数代价,求上完 nnn 节课所需的最小代价 题解: 设f(i,j,0/1)f(i,j,0/1)f(i,j,0/1)表示到第 iii 节课已经用了 jjj 次申请,且这节课不使用///使用 申请的最小权值,用 Floyd 预处理

qq_50554695的博客 171

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【NOIP2016 提高组 day1 T3】换教室

题目 https://www.luogu.org/problemnew/show/P1850 思路 期望DP 很容易想到设f[i][j]为前i个时间段,换了j次,的期望长度。结果发现转移不了,因为我们不知道它的出发点在哪。 自然,数组就变成了f[i][j][0..1]表示是否申请成功 DP时每句所有情况,记住乘上概率 预处理一个floyd即可 代码 #include&...

Brute♂force 542

企业AI战略:从ChatGPT应用到构建专属模型栈的实战指南

大语言模型(LLM)作为人工智能领域的重要突破,通过海量数据训练实现了通用智能能力的泛化。其核心原理在于Transformer架构与自注意力机制,能够理解和生成人类语言。这一技术价值在于极大降低了智能交互的门槛,使企业能够快速集成基础AI能力。然而,单纯依赖外部API会导致产品同质化,缺乏竞争壁垒。因此,企业应将战略重心转向构建内部专属的“模型栈”,通过领域适配层处理独家数据,并利用检索增强生成(RAG)等技术深化垂直场景应用。这种从“模型中心”到“数据与场景中心”的转变,结合提示词工程与微调技术,能够将通

HJ921004的博客 493

概率DP(洛谷/CF题目)

文章目录P3802 小魔女帕琪(简单排列组合)P1365 WJMZBMR打osu! / Easy(简单期望)P2634 [国家集训队]聪聪可可(树上期望)CF804D Expected diameter of a tree(树的直径+期望)CF16E Fish(简单状压+概率)P4562 [JXOI2018]游戏(质因数分解+组合数) P3802 小魔女帕琪(简单排列组合) 所有的排列情况为(S=∑ai)!(S=\sum{a_i})!(S=∑ai​)!。因此接下来考虑可以形成一个大招的情况数量即可。 大招是

m0_51531927的博客 544

洛谷P1850 换教室(概率dp)

传送门 我的floyd竟然写错了?今年NOIP怕不是要爆零了? 这就是一个概率dp 我们用$dp[i][j][k]$表示在第$i$个时间段,已经申请了$j$次,$k$表示本次换或不换,然后直接暴力转移 点数只有300,跑一遍floyd 1 //minamoto 2 #include<iostream> 3 #include<cstdio> ...

weixin_33813128的博客 183

洛谷 #1850. 换教室

题意 有n个时间段,每个时间段有2节课,最多可以换m次课,概率给出 把校园抽象成无向图,求耗费最小体力值 题解 这是一道期望Dp,f[i][j][k]表示考虑到第i个教室,换了j次,k为0/1,表示这次是否换 分四种情况,具体见代码 调试记录 double的输入提示符是%lf,不是%llf 害老子调了一个小时害老子调了一个小时害老子调了一个小时 #include &lt;cstdio&gt; #i...

时间次元的博客 333

换教室(期望dp)

题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程。 在可以选择的课程中,有 2n2n2n 节课程安排在 nnn 个时间段上。在第 iii(1≤i≤n1 \leq i \leq n1≤i≤n)个时间段上,两节内容相同的课程同时在不同的地点进行,其中,牛牛预先被安排在教室 cic_ici​ 上课,而另一节课程在教室 d...

Chap13629754032的博客 255

Luogu P1850 [NOIp2016提高组]换教室 | 期望dp

题目链接 思路: <1>概率与期望期望=情况①的值*情况①的概率+情况②的值*情况②的概率+……+情况n的值*情况n的概率举个例子,抛一个骰子,每一面朝上的概率都是1/6,则这一个骰子落地后朝上的那一面的期望值就为:1*1/6+2*1/6+3*1/6+4*1/6+5*1/6+6*1/6=21/6=3.5 你们懂的(其实是我不怎么会) <2>floyd 你们懂的(这...

weixin_30632883的博客 162

洛谷P1850 [NOIP2016]换教室

期望DP

ACoder 1090
上一篇: 蓝书(算法竞赛进阶指南)刷题记录——POJ3468 A Simple Problem with Intergers(树状数组维护差分)
下一篇: 【NOIP2016】BZOJ4719天天爱跑步题解(树上差分+LCA+桶)
hezlik
博客等级 码龄9年 111粉丝 241原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值