【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必须尽快走 ...
随机推荐
- 2017-2018-2 20155234『网络对抗技术』Exp6:信息收集与漏洞扫描
whois查询 whois用来进行域名注册信息查询.以常用的百度为例,输入whois baidu.com可查询到3R注册信息,包括注册人的姓名.组织和城市等信息. 我们可以很清楚地看到baidu的3R ...
- 2015531 网络攻防 Exp1 PC平台逆向破解(5)M
2015531 网络攻防 Exp1 PC平台逆向破解(5)M 实践目标 本次实践的对象是linux的可执行文件 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串 ...
- LCA的一些算法
LCA,就是求树上任意两点的最近公共祖先 (本题图片与代码均为Luogu3379) 方法我好像讲过一个,这次把主要的三个一起讲一讲 <1> 倍增(O(n log n)) 我们先考虑最基本的 ...
- PostgreSQL基础知识与基本操作索引页
磨砺技术珠矶,践行数据之道,追求卓越价值 返回顶级页:PostgreSQL索引页 luckyjackgao@gmail.com 本页记录所有本人所写的PostgreSQL的基础知识和基本操作相关文摘和 ...
- MFC 用ShellExecute打开外部文件
知识点: 获取CListCtrl选中文本 用ShellExecute打开外部文件 一.CListCtrl::GetFirstSelectedItemPosition CListCtrl::GetFir ...
- HTML基础之DOM操作
DOM(Document Object Model 文档对象模型) 一个web页面的展示,是由html标签组合成的一个页面,dom对象实际就是将html标签转换成了一个文档对象.可以通过dom对象中j ...
- SQL Server 全文搜索
SQL Server 的全文搜索(Full-Text Search)是基于分词的文本检索功能,依赖于全文索引.全文索引不同于传统的平衡树(B-Tree)索引和列存储索引,它是由数据表构成的,称作倒转索 ...
- stl源码剖析 详细学习笔记 算法总览
//****************************基本算法***************************** /* stl算法总览,不在stl标准规格的sgi专属算法,都以 *加以标 ...
- 访问kubernetes ingress-controller
ingress-controller可以理解为一套反向代理系统,本身需要暴露端口到集群外部,以便客户端访问. 根据实际使用,给出两种暴露端口的方式,如下: 方案一 拓扑 说明 ingress-cont ...
- wordpress 5.1 后台拿shell
闲着没事搭建了一套最新版wordpress 5.1,本身wordpress后台安全防御是比较差的,想尝试下后台是否可以拿shell. 再上传插件的地方可以直接上传php文件,并且该文件可以执行: sh ...