CF1400G 题解

传送门

题意

\(n\) 人和 \(m\) 对敌对关系,每个人有一个条件区间 \([l_i,r_i]\)
现在要在这 \(n\) 人中选出若干人。定义一个合法的选择 \(\{S\}\),当且仅当对于 \(\{S\}\) 中的所有人 \(i\)\(l_i≤|S|≤r_i\),且 \(\{S\}\) 中所有人互不敌对。
求有多少种合法的方案数,答案对 \(998244353\) 取模。
\(1≤n≤3×10^5,0≤m≤min\{20,\frac{n(n-1)}{2}\},1≤l_i≤r_i≤n\)

题解

因为 \(m\) 很小,考虑容斥。设 \(S\) 为所有敌对关系的集合,\(cnt(S)\)\(S\) 中的限制不满足的方案数。答案为

\[\sum_{T⊆S}(-1)^{|T|}cnt(T) \]

都不满足,则所选集合中的边的两顶点都要选择。由这些点条件区间的交集可以知道选择的点的个数的范围,设为 \([L,R]\)。枚举这个范围内的数。设 \(c\) 为必须选的点个数,\(s_i\) 表示选点个数为 \(i\) 时可以选择的点数(差分即可),则:

\[cnt(T)=\sum_{i=L}^R \binom{s_i-c}{i-c} \]

由于 \(c∈[1,2×m]\),利用前缀和预处理即可。

posted @ 2022-09-25 16:34  realFish  阅读(26)  评论(0)    收藏  举报