题目传送门 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}\). 这个东西直接树上高斯…
题目描述 有一棵 \(n\) 个点的树.你从点 \(x\) 出发,每次等概率随机选择一条与所在点相邻的边走过去. 有 \(q\) 次询问,每次询问给定一个集合 \(S\),求如果从 \(x\) 出发一直随机游走,直到点集 \(S\) 中所有点都至少经过一次的话,期望游走几步. 特别地,点 \(x\)(即起点)视为一开始就被经过了一次. 答案对 \(998244353\) 取模. 题解 这道题要求点集 \(S\) 中所有点都至少经过一次的期望步数,直接做不好做,要先用一个 min-max 容斥转换…
题意 题目链接 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…
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…
题目描述 给定一棵 nn 个结点的树,你从点 xx 出发,每次等概率随机选择一条与所在点相邻的边走过去. 有 QQ 次询问,每次询问给定一个集合 SS,求如果从 xx 出发一直随机游走,直到点集 SS 中所有点都至少经过一次的话,期望游走几步. 特别地,点 xx(即起点)视为一开始就被经过了一次. 答案对 998244353998244353 取模. 输入格式 第一行三个正整数 n,Q,xn,Q,x. 接下来 n-1n−1 行,每行两个正整数 (u,v)(u,v) 描述一条树边. 接下来 QQ …
题目链接 loj2542 题解 设\(f[i][S]\)表示从\(i\)节点出发,走完\(S\)集合中的点的期望步数 记\(de[i]\)为\(i\)的度数,\(E\)为边集,我们很容易写出状态转移方程 ①若\(i \notin S\) \[f[i][S] = \frac{1}{de[i]}\sum\limits_{(i,j) \in E}(f[j][S] + 1)\] ②若\(i \in S\) 除非\(\{i\} = S\),\(f[i][S] = 0\) 否则 \[f[i][S] = \f…
搞了一下午 真的是啥都不会 首先这道题要用到Min-Max容斥 得到的结论是 设 $Max(S)$表示集合里最晚被访问的节点被访问的期望步数 设 $Min(S)$表示集合里最早被访问的节点被访问的期望步数 那么$ Max(S) = ∑_{T \in S} {-1^ { \lvert T \rvert+1} }Min(T)$ (这个相关的证明和理解可以看看HDU4336 附一个题解) 考虑对于一个集合$S$如何计算$Min(S)$ 记$d_u$为点$u$的度数 当$u\notin S \space…
题面 思路 我们可以把到每个点的期望步数算出来取max?但是直接算显然是不行的 那就可以用Min-Max来容斥一下 设\(g_{s}\)是从x到s中任意一个点的最小步数 设\(f_{s}\)是从x到s中任意一个点的最大步数 然后就可以的得到 \(f_{s}=\sum_{t\subseteq s}(-1)^{|t|+1}g_t\) 然后考虑g怎么求 设\(p_i\)是i点到任意一个子集中的点的最小步数 有\(p_u=\frac{1}{du_u}(1+p_{fa_u})+\frac{1}{du_u}…
「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)\) 推出来,接下来就是子集…
Loj #2542. 「PKUWC2018」随机游走 题目描述 给定一棵 \(n\) 个结点的树,你从点 \(x\) 出发,每次等概率随机选择一条与所在点相邻的边走过去. 有 \(Q\) 次询问,每次询问给定一个集合 \(S\),求如果从 \(x\) 出发一直随机游走,直到点集 \(S\) 中所有点都至少经过一次的话,期望游走几步. 特别地,点 \(x\)(即起点)视为一开始就被经过了一次. 答案对 $998244353 $ 取模. 输入格式 第一行三个正整数 \(n,Q,x\). 接下来 \(…
传送门 那么除了D1T3,PKUWC2018就更完了(斗地主这种全场0分的题怎么会做啊) 发现我们要求的是所有点中到达时间的最大值的期望,\(n\)又很小,考虑min-max容斥 那么我们要求从\(x\)走到第一个属于某个子集\(S\)的节点的步数期望,这是一个经典的树上高斯消元问题. 将树设为以\(x\)为根,设\(f_{i , S}\)为从第\(i\)个点随机游走到达点集\(S\)任意一个点停止,行走步数的期望,转移: \(1.i \in S: f_{i , S}=0\) \(2.i \no…
题目: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]…
题意 给定一棵 \(n\) 个结点的树,你从点 \(x\) 出发,每次等概率随机选择一条与所在点相邻的边走过去. 有 \(Q\) 次询问,每次询问给定一个集合 \(S\),求如果从 \(x\) 出发一直随机游走,直到点集 \(S\) 中所有点都至少经过一次的话,期望游走几步. \(1\leq n\leq 18\),\(1\leq Q\leq 5000\) . Solution 题意即为求集合中最后一个点被访问的期望时间.考虑 \(\text{min-max}\) 容斥,转化为第一个点被访问的期望…
传送门 首先,关于\(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…
题目 我暴力过啦 看到这样的东西我们先搬出来\(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\)做一个子集和就好了 尽管这是一…
$ 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…
题解 虽然我知道minmax容斥,但是--神仙能想到把这个dp转化成一个一次函数啊= = 我们相当于求给定的\(S\)集合里最后一个被访问到的点的时间,对于这样的max的问题,我们可以用容斥把它转化成min问题 也就是 \(max{S} = \sum_{T \subset S} (-1)^{|T| + 1}min{T}\) 然后我们变成要求对给定的集合,最早访问到其中的点的期望 设当前的点集为\(S\),\(f(u)\)为从u点出发最早到\(S\)中的点期望的步数 如果\(u \in S\) \…
MinMax容斥将问题转化为求x到S中任意点的最小时间. 树形DP,直接求概率比较困难,考虑只求系数.最后由于x节点作为树根无父亲,所以求出的第二个系数就是答案. https://blog.csdn.net/dearbaba_8520/article/details/80556499 $O((n+q)2^n)$ #include<cstdio> #include<algorithm> #define rep(i,l,r) for (int i=(l); i<=(r); i++…
「Luogu4321」随机游走 题目描述 有一张 \(n\) 个点 \(m\) 条边的无向图,\(Q\) 组询问,每次询问给出一个出发点和一个点集 \(S\) ,求从出发点出发随机游走走遍这个点集的期望步数. \(1 \leq n \leq 18, 1 \leq Q \leq 10^5\) 解题思路 : 听说是 \(\text{pkuwc2018d2t3}\) 加强版?但是原题时限是1s,各种卡不进去感觉一定要写 \(\text{Min-Max}\) 容斥,不过反正我今年听指导建议没报 \(\t…
写在这道题前面 : 网上的一些题解都不讲那个系数是怎么推得真的不良心 TAT (不是每个人都有那么厉害啊 , 我好菜啊) 而且 LOJ 过的代码千篇一律 ... 那个系数根本看不出来是什么啊 TAT 后来做了 HDU 4035 终于会了.... 感谢 雕哥的帮助 !!! 题意 #2542. 「PKUWC 2018」随机游走 题解 原本的模型好像我不会那个暴力dp .... 就是直接统计点集中最后经过的点的期望 , 也就是点集中到所有点步数最大值的期望 . (也许可以列方程高斯消元 ? 似乎没分)…
哇我太菜啦555555 不妨钦定我们需要访问的点集为$S$,在$S$已知的情况下,我们令$f(x) $表示从$x$走到点集$S$中任意一点的期望步数. 若$x∈S$,则显然$f(x)=0$,否则$f[x]=\frac{1}{d[x]}\sum f[ch[x]]+1$.其中$d[x]$表示与$x$相连的节点个数,$ch[x]$为与$x$相连的节点. 然后就列出了$n$条式子,显然是一个$n$元一次方程,可以考虑用高斯消元去求解,这样时间复杂度是$O(n^32^{n})$,只能拿$60$分(然而我考…
题目:https://loj.ac/problem/2541 看了题解才会……有三点很巧妙. 1.分母如果变动,就很不好.所以考虑把操作改成 “已经选过的人仍然按 \( w_i \) 的概率被选,但是再次选中一个已经选过的人算作没有操作” . 2.然后要容斥,考虑强制点集 S 的人在 1 号点之后被选.其余随意,那么 \( ans=\sum\limits_{S} (-1)^{|S|} \sum\limits_{i=0}^{\infty} (1-\frac{w_1 + w_S}{A})^i \fr…
题面传送门 一道挺综合的 hot tea,放到 PKUWC 的 D2T2 还挺喜闻乐见的( 首先我们考虑怎样对一个固定的集合 \(S\) 计算答案,注意到我们要求的是一个形如 \(E(\max(S))\) 的式子,套用 Min-Max 反演可将其转化为 \(\sum\limits_{T\subseteq S}(-1)^{|T|-1}E(\min(T))\),我们记 \(g_T=(-1)^{|T|-1}E(\min(T))\),那么 \(ans_S=\sum\limits_{T\subseteq…
题目:https://loj.ac/problem/2542 因为走到所有点的期望就是所有点期望的最大值,所以先最值反演一下,问题变成从根走到一个点集任意一点就停止的期望值: 设 \( f[x] \),则 \( f[x] = \frac{f[fa]+1+\sum\limits_{v \in son} (f[v]+1)}{d[x]} \),其中 \( d[x] \) 是 \( x \) 的度数: 因为其实只和 \( fa \) 有关,所以套路是设 \( f[x] = K[x] * f[fa] +…
题意 题面 给一个 \(n\) 个点 \(m\) 条边的无向图.考虑如下求独立集的随机算法:随机一个排列并按顺序加点.如果当前点能加入独立集就加入,否则不加入.求该算法能求出最大独立集的概率. \(n\le 20\). Solution 考虑状压DP.按照题意我们按顺序加点,如果该点不能加入独立集,那么这个点可以插在之后排列的某一个位置中. 我们记当前排列独立集中的点的集合和不在独立集中的点的个数为状态,设 \(F(S,i)\) 表示当前独立集点的集合为 \(S\),还有 \(i\) 个点没有插…
[BZOJ2707][SDOI2012]走迷宫 Description Morenan被困在了一个迷宫里.迷宫可以视为N个点M条边的有向图,其中Morenan处于起点S,迷宫的终点设为T.可惜的是,Morenan非常的脑小,他只会从一个点出发随机沿着一条从该点出发的有向边,到达另一个点.这样,Morenan走的步数可能很长,也可能是无限,更可能到不了终点.若到不了终点,则步数视为无穷大.但你必须想方设法求出Morenan所走步数的期望值. Input 第1行4个整数,N,M,S,T 第[2, M…
题目描述 传送门 分析 首先判掉 \(INF\) 的情况 第一种情况就是不能从 \(s\) 走到 \(t\) 第二种情况就是从 \(s\) 出发走到了出度为 \(0\) 的点,这样就再也走不到 \(t\) 然后我们去考虑 \(60\) 分的做法 我们设 \(dp[u]\) 为当前在点 \(u\) 走到点 \(t\) 的期望步数 那么就有 \(dp[u]=\sum_{u->v}^v((dp[v]+1) \times \frac{1}{rd[u]})\) 移项之后就变成了 \(dp[u]-\sum_…
LINK 思路 首先在加入几个点之后所有的点都只有三种状态 一个是在独立集中,一个是和独立集联通,还有一个是没有被访问过 然后前两个状态是可以压缩起来的 因为我们只需要记录下当前独立集大小和是否被访问过,然后每次加点我们直接枚举加入独立集中的点然后周围联通的点都可以一起访问,只要保证当前枚举的点没有被访问过就可以了 因为这样选出来的当前的点一定是不是独立集中的且不和独立集联通的 然后每次因为加入了很多个点,我们设\(w_i\)表示和i联通(包括i)的所有点的集合 然后就可以用排列数算了,只需要保…
题目 思博状压写不出是不是没救了呀 首先我们直接状压当前最大独立集的大小显然是不对的,因为我们的答案还和我们考虑的顺序有关 我们发现最大独立集的个数好像不是很多,可能是\(O(n)\)级别的,于是我们考虑从这个方面入手 我们求出所有的最大独立集,考虑求出有多少种考虑顺序能够恰好得到这个最大独立集 设当前已经考虑的点的状态为\(S\)时的方案数为\(dp_S\) 我们考虑枚举出一个不在状态\(S\)的点\(x\) 分两种情况 \(x\)是最大独立集的点,所以我们可以把这个点加入\(S\) \(x\…
题目链接 loj2540 题解 有一个朴素三进制状压\(dp\),考虑当前点三种状态:没考虑过,被选入集合,被排除 就有了\(O(n3^{n})\)的转移 但这样不优,我们考虑优化状态 设\(f[i][S]\)表示独立集大小为\(i\),不可选集合为\(S\)[要么是已经在独立集中,要么已经被排除了] 那么剩余点都是可选的 就枚举剩余点\(u\),记\(u\)相邻的集合为\(S_u\),那么当\(u\)加入后,集合\(S_u\)的点都不能选,但是由于所有点都会加入排列之中,\(S_u\)中除了\…