「PKUWC2018」Minimax】的更多相关文章

题目链接 loj#2537. 「PKUWC2018」Minimax 题解 设\(f_{u,i}\)表示选取i的概率,l为u的左子节点,r为u的子节点 $f_{u,i} = f_{l,i}(p \sum_{j < i} + (1 - p)\sum_{j > i}f_{r,j}) + f_{r,i}(p\sum_{j < i}f_{l,i} + (1 - p)\sum_{j > i}f_{l,j}) $ 对于每个节点s维护当前节点所有可能的概率和 ,线段树合并 代码 #include&…
LINK 思路 首先暴力\(n^2\)是很好想的,就是把当前节点概率按照权值大小做前缀和和后缀和然后对于每一个值直接在另一个子树里面算出贡献和就可以了,注意乘上选最大的概率是小于当前权值的部分,选最小是大于当前权值的部分 然后考虑怎么优化 用线段树合并来做 每次向左递归的时候就把x右子树对y左子树的贡献加上,把y右子树对x左子树的贡献加上 每次向左递归的时候就把x左子树对y右子树的贡献加上,把y左子树对x右子树的贡献加上 考虑每个节点,左边的区间贡献一定会被统计完全,右边的区间贡献一定会被统计完…
题目链接 loj2537 题解 观察题目的式子似乎没有什么意义,我们考虑计算出每一种权值的概率 先离散化一下权值 显然可以设一个\(dp\),设\(f[i][j]\)表示\(i\)节点权值为\(j\)的概率 如果\(i\)是叶节点显然 如果\(i\)只有一个儿子直接继承即可 如果\(i\)有两个儿子,对于儿子\(x\),设另一个儿子为\(y\) 则有 \[f[i][j] += f[x][j](1 - p_i)\sum\limits_{k > j}f[r][k] + f[x][j]p_i\sum\…
题解 加法没写取模然后gg了QwQ,de了半天 思想还是比较自然的,线段树合并的维护方法我是真的很少写,然后没想到 很显然,我们有个很愉快的想法是,对于每个节点枚举它所有的叶子节点,对于一个叶子节点的值为v,然后查询另一棵树小于v的概率和×该节点的p + 大于v的概率和 × 该节点的(1 - p),作为这个v新的概率 我们用线段树合并优化这个操作,我们对于两个树的左右儿子计算四个值 分别是 对于第一棵树的左区间,计算第二棵树的右区间的影响,是第二棵树右区间的概率和×(1 - p) 对于第一棵树的…
题面 题解 强势安利一波巨佬的$blog$ 线段树合并吼题啊 合并的时候要记一下$A$点权值小于$l$的概率和$A$点权值大于$r$的概率,对$B$点同样做 时空复杂度$\text O(nlogw)$,$w$为其中权值的最大值 代码 #include<cstdio> #include<cstring> #include<cctype> #include<algorithm> #define RG register #define file(x) freope…
传送门 思路 首先有一个\(O(n^2)\)的简单DP:设\(dp_{x,w}\)为\(x\)的权值为\(w\)的概率. 假设\(w\)来自\(v1\)的子树,那么有 \[ dp_{x,w}=dp_{v1,w}\times (p\times \sum_{w'>w}dp_{v2,w'}+(1-p)\sum_{w'<w}dp_{v2,w'}) \] 其中\(p\)表示\(x\)选较小权值的概率. 由于每个点的状态数只有子树中的叶子个数,可以考虑线段树合并来优化这一DP过程. merge(k1,k2…
Loj #2542. 「PKUWC2018」随机游走 题目描述 给定一棵 \(n\) 个结点的树,你从点 \(x\) 出发,每次等概率随机选择一条与所在点相邻的边走过去. 有 \(Q\) 次询问,每次询问给定一个集合 \(S\),求如果从 \(x\) 出发一直随机游走,直到点集 \(S\) 中所有点都至少经过一次的话,期望游走几步. 特别地,点 \(x\)(即起点)视为一开始就被经过了一次. 答案对 $998244353 $ 取模. 输入格式 第一行三个正整数 \(n,Q,x\). 接下来 \(…
「PKUWC2018」随机游走(min-max容斥+FWT) 以后题目都换成这种「」形式啦,我觉得好看. 做过重返现世的应该看到就想到 \(min-max\) 容斥了吧. 没错,我是先学扩展形式再学特殊形式的. \[E(\text{max}(S))=\sum_{T\subseteq S}(-1)^{|T|+1}E(\text{min}(T))\] 问题转化之后,然后我们可以枚举所有状态然后 \(O(n)\) 树形 \(dp\) \(-1\) 那项可以 \(O(2^n)\) 推出来,接下来就是子集…
「PKUWC2018」猎人杀 解题思路 首先有一个很妙的结论是问题可以转化为已经死掉的猎人继续算在概率里面,每一轮一直开枪直到射死一个之前没死的猎人为止. 证明,设所有猎人的概率之和为 \(W\) ,当前已经死掉了概率之和为 \(T\) 的猎人,原问题下一个射死 \(i\) 的概率 \(P\) 为 \[ P =\dfrac{w_i}{W-T} \] 转化过后的问题下一个射死 \(i\) 的概率为 \[ P=\dfrac{T}{W}P+\dfrac{w_i}{W} \\ \dfrac{W-T}{W…
LOJ3044. 「ZJOI2019」Minimax 搜索 https://loj.ac/problem/3044 分析: 假设\(w(1)=W\),那么使得这个值变化只会有两三种可能,比\(W\)小的值变成\(W+1\),比\(W\)大的值变成\(W-1\),或直接修改\(W\). 先考虑第一部分,设\(f_{x}\)表示只改变权值\(<W\)的节点,\(x\)节点权值\(\le W\)的概率,这样能推出\(dp\)式子 \(f_x=\prod\limits_{t}f_t​\) \((dep_…