ZR2506 题解

题意

给定 \(m\) 个区间 \([l_i,r_i]\),每一个单位时间中你会等概率随机地获得这 \(m\) 个区间中的恰好一个(可能会重复获得之前已经获得的区间)。

如果在某一个单位时间结束的时刻,你获得的所有区间的并集为 \([1,n]\),那么这个过程会立即结束。

你需要求出这个过程期望需要多少单位时间才能结束。答案对 \(998244353\) 取模。

保证给定的 \(m\) 个区间的并集为 \([1,n]\)

\(1\le n,m\le3\times10^3,1\le l_i<r_i\le n\)

题解

这题思路容易走歪,如果一开始没有想到容斥,会得到一个无法优化的 \(O(n^3)\) 算法。发现正解就需要多做题来获得敏锐的洞察力了。

考虑 Min-Max 容斥,设 \(t_i\)\([i,i+1]\) 区间被初次覆盖的时间。所求 \(E(\max\limits_{i}t_i)=\sum\limits_{s\neq\varnothing}(-1)^{|s|+1}E(\min\limits_{i\in s}t_i)\)。后项是个 01 分布,于是去掉了期望:\(\sum\limits_{s\neq\varnothing}(-1)^{|s|+1}\frac{m}{f(s)}\),其中 \(f(s)\) 表示与 \(s\) 有交的区间数量。已经可以暴力 \(O(n^3)\) 求解。

考虑优化。有交可以转化为无交。从左往右,将每段区间在其右端点加入。对 \(i\in[1,n-1]\),设 \(g_{i,j}\) 表示所有最右端为 \(i\) 且与 \(j\) 个区间无交的 \(s\)\(\sum\limits_s(-1)^{|s|+1}\)

加入一个区间 \([j,i]\),则所有 \(k<j\),将 \(g_k\) 右移一位;\(k\ge j\) 不变。加入一个点 \(i\),其 \(g\) 为前面所有 \(g\) 对应位相加再乘 \(-1\)。线段树维护即可。复杂度 \(O(nm\log n)\)

posted @ 2023-03-16 07:15  realFish  阅读(24)  评论(0)    收藏  举报