【CF367D】Sereja and Sets 题解

题目大意

  有 mm 个非空集合,他们两两交集为空,并集为 [1,n][1, n]
  要你选若干个集合,假设他们的并排序后是数组 b1,,bbb_1,\cdots,b_{|b|},给定 dd,要求

  1. b1db_1 \le d
  2. bi+1bidb_{i+1}−b_i \le d
  3. nd+1bbn−d+1 \le b_{|b|}

  最后问你最少选几个集合能满足要求。
  n,d105, m20n,d\le10^5,\ m \le 20

题解

  问题转化成:11~nn 每个数都有一个颜色,要你在这个数轴上选一些数,使得两两间隔(包括开头、结尾)不超过 dd,并且选出的颜色种类数最少。

  也就是说任意连续的 dd 个数中,至少有一个被选。假设这 dd 个数的颜色集合是 SS,那么答案的颜色集合 ansans 必须与 SS 有交。
  也就是现在有 nd+1n-d+1 个限制,你要求一个最小的 ansans,使得 ansans 与所有限制有交。

  有交不好做,于是考虑无交,即看看哪些 ansans 是不可行的。

S1S2=S1S2S1 \cap S2= \emptyset \Rightarrow S1 \subseteq \complement S2

  于是开一个 2202^{20} 的标记数组,把所有限制打上标记,然后从大到小合并标记,这样就知道哪些东西可以作为 ansans 哪些不可以了。