Loading

【题解】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;
}
posted @ 2022-03-06 11:03  7KByte  阅读(249)  评论(1编辑  收藏  举报