【题解】ABC242Ex - Random Painting
给定若干个区间,每次随机选择一个区间覆盖,问期望多少次能覆盖区间 \([1,n]\)。
期望多少次等价于求每个位置最晚被覆盖的时间的期望,我们记位置 \(i\) 的被覆盖时间为 \(t_i\)。那么就是求 \(E(\max\{t_i\})\)。
考虑 min-max 容斥,然后 DP,\(f_{i,j}\) 表示集合中最后一个数为 \(i\),目前有 \(j\) 个区间没有覆盖集合中的点,对应所有集合的容斥系数之和。时间复杂度 \(\mathcal{O}(N^2M)\)。
#define N 405
int n, m, f[N][N], w[N][N];
int main() {
read(n, m);
f[0][0] = ~0;
rp(i, m){
int l, r; read(l, r);
pr(x, l)rep(y, r, n)w[x][y]++;
}
rp(i, n)rep(j, 0, i - 1){
int u = w[j + 1][i - 1];
rep(k, u, m)su(f[i][k], f[j][k - u]);
}
int ans = 0;
rp(i, n)rep(j, 0, m)if(f[i][j]){
int k = j + w[i + 1][n];
ad(ans, m * 1LL * Pow(m - k, P - 2) % P * f[i][j] % P);
}
printf("%d\n", ans);
return 0;
}