【JLOI 2012】时间流逝(期望,树上高斯消元)
这是一道传统的期望题,可是有一些套路值得我去掌握。
我们用$s$来表示一种状态,就是当前拥有的能量圈,是一个正整数拆分的形式。
用$f_{s}$表示如果遇到果冻鱼后丢掉了最小的能量圈后的状态,对于每一个$s$,$f_{s}$是唯一的。
用$v_{s}$表示随机得到了能量圈后的状态,假设目前还有$mi$种能量圈可选,那就有$mi$种转移。
由于$f_{s}$的能量圈个数一定小于$s$的能量圈个数,所以这是一个树形结构。
可以简单写出$s$的期望的方程式:
$E_{s} = 1 + p * E_{f_{s}} + (1 - p) * \frac{1}{mi} * \sum E_{v_{s}}$。
这里我们发现,当$s$的和大于阈值的时候,$E_{s} = 0$,也就是叶子的贡献和其父亲是没有关系的。
这里有一个套路,就是由于它是一个树,每一个$E_{s}$都可以表示成$k_{s} * E_{f_{s}} + b_{s}$的形式。
于是把上式中的$E_{v_{s}}$展开成$k_{v_{s}} * E_{s} + b_{v_{s}}$。
我们设$g = (1 - p) * \frac{1}{mi}, nk = \sum k_{v_{s}}, nb = \sum b_{v_{s}}$,移项可得:
$(1 - g * nk) * E_{s} = 1 + p * E_{f_{s}} + g * nb$
$E_{s} = \frac{p}{1 - g * nk} E_{f_{s}} + \frac{1 + g * nb}{1 - g * nk}$
所以得到$k_{s} = \frac{p}{1 - g * nk}, b_{s} = \frac{1 + g * nb}{1 - g * nk}$。
叶子的$k,b$都是$0$,于是我们只要从叶子向上推就可以了,能算出每个点的$k,b$,因为它只和儿子有关,而根是没有父亲的,答案就是根节点的$b$。
由于阈值不大,正整数拆分的形式不会太多,复杂度是合理的。
$\bigodot$技巧&套路:
- 树上高斯消元的特殊性质
#include <cstdio>
#include <algorithm> using namespace std; int n, t, a[];
double p; struct No { double k, b; }; No Dfs(int s, int mi) {
No re = (No){ , };
if (s > t) return re;
double nk = , nb = ;
double np = s? p : , g = ( - np) / mi;
for (int i = ; i < mi; ++i) {
No so = Dfs(s + a[i], i + );
nk += so.k, nb += so.b;
}
re.k = np / ( - g * nk);
re.b = ( + g * nb) / ( - g * nk);
return re;
} int main() {
while (scanf("%lf%d%d", &p, &t, &n) == ) {
for (int i = ; i < n; ++i)
scanf("%d", &a[i]);
sort(a, a + n);
printf("%.3f\n", Dfs(, n).b);
}
return ;
}
【JLOI 2012】时间流逝(期望,树上高斯消元)的更多相关文章
- LOJ2542 PKUWC2018 随机游走 min-max容斥、树上高斯消元、高维前缀和、期望
传送门 那么除了D1T3,PKUWC2018就更完了(斗地主这种全场0分的题怎么会做啊) 发现我们要求的是所有点中到达时间的最大值的期望,\(n\)又很小,考虑min-max容斥 那么我们要求从\(x ...
- LOJ 2542 「PKUWC2018」随机游走 ——树上高斯消元(期望DP)+最值反演+fmt
题目:https://loj.ac/problem/2542 可以最值反演.注意 min 不是独立地算从根走到每个点的最小值,在点集里取 min ,而是整体来看,“从根开始走到点集中的任意一个点就停下 ...
- bzoj 2784 [JLOI2012]时间流逝——树上高斯消元
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2784 一个状态可以加很多个能量圈,但减少能量圈的情况只有一种.所以可以用树来刻画. 然后就变 ...
- loj2542 「PKUWC2018」随机游走 MinMax 容斥+树上高斯消元+状压 DP
题目传送门 https://loj.ac/problem/2542 题解 肯定一眼 MinMax 容斥吧. 然后问题就转化为,给定一个集合 \(S\),问期望情况下多少步可以走到 \(S\) 中的点. ...
- 洛谷 P5643 - [PKUWC2018]随机游走(Min-Max 容斥+FWT+树上高斯消元,hot tea)
题面传送门 一道挺综合的 hot tea,放到 PKUWC 的 D2T2 还挺喜闻乐见的( 首先我们考虑怎样对一个固定的集合 \(S\) 计算答案,注意到我们要求的是一个形如 \(E(\max(S)) ...
- BZOJ_3143_[Hnoi2013]游走_期望DP+高斯消元
BZOJ_3143_[Hnoi2013]游走_期望DP+高斯消元 题意: 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机 ...
- NOI.AC省选模拟赛第一场 T1 (树上高斯消元)
link 很容易对于每个点列出式子 \(f_{x,y}=(f_{x,y-1}+f_{x,y}+f_{x,y+1}+f_{x+1,y})/4\)(边角转移类似,略) 这个转移是相互依赖的就gg了 不过你 ...
- [JLOI2012]时间流逝 树上高斯消元 概率期望
题面 题意:(感觉题面写的题意是错的?)有\(n\)种能量不同的圈,设当前拥有的圈的集合为\(S\),则: 1,每天有\(p\)概率失去一个能量最小的圈.特别的,如果\(S = \varnothing ...
- ZJUT 1423 地下迷宫(期望DP&高斯消元)
地下迷宫 Time Limit:1000MS Memory Limit:32768K Description: 由于山体滑坡,DK被困在了地下蜘蛛王国迷宫.为了抢在DH之前来到TFT,DK必须尽快走 ...
随机推荐
- 20155301 Web基础
20155301 Web基础 1.基础问题回答 (1)什么是表单 答: 表单是一个包含表单元素的区域. 表单元素是允许用户在表单中(比如:文本域.下拉列表.单选框.复选框等等)输入信息的元素 (2)浏 ...
- EZ 2018 05 13 NOIP2018 模拟赛(十三)
这次的比赛真心水,考时估分240,然后各种悠闲乱逛 然后测完T1数组开小了炸成40,T2,T3都没开long long,T2炸成20,T3爆0 掉回1600+的深渊,但是还有CJJ dalao比我更惨 ...
- Shell基础入门
目录 Shell基础入门 1.什么是Shell? 2.Shell脚本的结构 3.Shell的变量 3.1.自定义环境变量 3.2.普通变量 3.3.位置参数变量 3.4.状态变量 4.条件测试和比较 ...
- 微服务监控zipkin、skywalking以及日志ELK监控系列
0.整体架构 整体架构目录:ASP.NET Core分布式项目实战-目录 一.目录 1.zipkin监控 2.skywalking监控 3.ELK日志监控 asp.net Core 交流群:78746 ...
- Redis数据备份、安全、管理服务器笔记
Redis 数据备份与恢复 Redis SAVE 命令用于创建当前数据库的备份. 实例 redis > SAVE OK 恢复数据 如果需要恢复数据,只需将备份文件 (dump.rdb) 移动到 ...
- Vxlan抓包
实验目的:验证Openstack vxlan组网模式验证虚拟机数据是否通过物理网卡流出 一. 同网段不同主机间虚拟机通讯 (同网段通讯直接通过物理机隧道口链接对端物理机隧道口,不需要通过网络节点): ...
- docker-compose编排
创建并启动容器 docker-compose up -d 备注: -d 后台启动并运行容器 前提是你在执行该命令的时候已经编写好了docker-compose.yml文件,在这个文件的当前目录执行上述 ...
- 《Pro SQL Server Internals, 2nd edition》的CHAPTER 2 Tables and Indexes中的Clustered Indexes一节(翻译)
<Pro SQL Server Internals> 作者: Dmitri Korotkevitch 出版社: Apress出版年: 2016-12-29页数: 804定价: USD 59 ...
- pytorch 对变长序列的处理
一开始写这篇随笔的时候还没有了解到 Dateloader有一个 collate_fn 的参数,通过定义一个collate_fn 函数,其实很多batch补齐到当前batch最长的操作可以放在colla ...
- Hexo初体验
title: Hexo初体验 date: 2018-05-10 tags: Hexo categories: Hexo --- Hexo本地安装 Node.js安装 Hexo npm安装如下 npm ...