题目:https://loj.ac/problem/2542 可以最值反演.注意 min 不是独立地算从根走到每个点的最小值,在点集里取 min ,而是整体来看,“从根开始走到点集中的任意一个点就停下”的期望步数. 设 f[ i ] 表示从根走到 i ,再走期望几步就能走到点集中的某个点.有 \( f[i]=\frac{1}{d[i]}\sum\limits_{j}(f[j]+1) \) ( j 是和 i 有边的点) 于是要“树上高斯消元”.其实就是尝试写成 \( f[i]=a[i]*f[st]…
Loj #2542. 「PKUWC2018」随机游走 题目描述 给定一棵 \(n\) 个结点的树,你从点 \(x\) 出发,每次等概率随机选择一条与所在点相邻的边走过去. 有 \(Q\) 次询问,每次询问给定一个集合 \(S\),求如果从 \(x\) 出发一直随机游走,直到点集 \(S\) 中所有点都至少经过一次的话,期望游走几步. 特别地,点 \(x\)(即起点)视为一开始就被经过了一次. 答案对 $998244353 $ 取模. 输入格式 第一行三个正整数 \(n,Q,x\). 接下来 \(…
$ Min$-$Max$容斥真好用 $ PKUWC$滚粗后这题一直在$ todolist$里 今天才补掉..还要更加努力啊.. LOJ #2542 题意:给一棵不超过$ 18$个节点的树,$ 5000$次询问,每次问从根随机游走走遍一个集合的期望步数 $ Solution:$ 考虑$ Min$-$Max$容斥 有$ Max(S)=\sum\limits_{T \subseteq S}(-1)^{|T|+1}Min(T)$ 其中$ S,T$是一个集合,$Max(S)$表示$ S$中最大元素,$Mi…
传送门 首先,关于\(Min-Max\)容斥 设\(S\)为一个点的集合,每个点的权值为走到这个点的期望时间,则\(Max(S)\)即为走遍这个集合所有点的期望时间,\(Min(S)\)即为第一次走到这个集合的期望时间,题目所求为\(Max(S)\)很难算于是转化为求\(Min(S)\) 设\(f_u\)为点从点\(u\)开始游走第一次到达\(S\)的期望时间,那么有\[f_u=1+\sum_{(u,v\in E)}\frac{f_v}{deg_v}\] 如果\(u\in S\),那么\(f_u…
题意 题目链接 Sol 考虑直接对询问的集合做MinMax容斥 设\(f[i][sta]\)表示从\(i\)到集合\(sta\)中任意一点的最小期望步数 按照树上高斯消元的套路,我们可以把转移写成\(f[x] = a_x f[fa] + b_x\)的形式 然后直接推就可以了 更详细的题解 #include<bits/stdc++.h> #define LL long long using namespace std; const int MAXN = 1e6 + 10, mod = 99824…
题解 虽然我知道minmax容斥,但是--神仙能想到把这个dp转化成一个一次函数啊= = 我们相当于求给定的\(S\)集合里最后一个被访问到的点的时间,对于这样的max的问题,我们可以用容斥把它转化成min问题 也就是 \(max{S} = \sum_{T \subset S} (-1)^{|T| + 1}min{T}\) 然后我们变成要求对给定的集合,最早访问到其中的点的期望 设当前的点集为\(S\),\(f(u)\)为从u点出发最早到\(S\)中的点期望的步数 如果\(u \in S\) \…
LOJ2542. 「PKUWC2018」随机游走 https://loj.ac/problem/2542 分析: 为了学习最值反演而做的这道题~ \(max{S}=\sum\limits_{T\subseteq S}(-1)^{|T|-1}min{T}\) 考虑排序后的\(a\)序列. \(\sum\limits_{T\subseteq S}(-1)^{|T|-1}min{T}=\sum\limits_{i=1}^na_i\sum\limits_{j=0}^{n-i}(-1)^j\binom{n…
「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)\) 推出来,接下来就是子集…
题目传送门 https://loj.ac/problem/2542 题解 肯定一眼 MinMax 容斥吧. 然后问题就转化为,给定一个集合 \(S\),问期望情况下多少步可以走到 \(S\) 中的点. 考虑 dp 的话,令 \(dp[x]\) 表示从 \(x\) 开始走的答案. 如果 \(x \in S\),那么 \(dp[x] = 0\): 否则,\(dp[x] = 1 + \frac{\sum\limits_{(x, y) \in T} dp[y]}{deg_x}\). 这个东西直接树上高斯…
题目 我暴力过啦 看到这样的东西我们先搬出来\(min-max\)容斥 我们设\(max(S)\)表示\(x\)到达点集\(S\)的期望最晚时间,也就是我们要求的答案了 显然我们也很难求出这个东西,但是我们有\(min-max\)容斥 设\(min(S)\)表示\(x\)第一次到达\(S\)的期望时间,我们就有 \[max(S)=\sum_{T\subseteq S}(-1)^{|T|}min(T)\] 我们现在只需要求出所有\(min(S)\)之后用\(fwt\)做一个子集和就好了 尽管这是一…