1 条题解
-
0
每个约束要求子矩阵的最大值恰好等于 ,这包含两个条件:
- 子矩阵内至少有一个格子等于 ;
- 子矩阵内所有格子不超过 。
直接处理“恰好等于”较为困难,考虑使用容斥原理。设 表示第 个约束不满足(即子矩阵最大值 ),则答案为
其中 表示强制子集 中的约束不满足时的方案数。
在容斥过程中,强制一个约束不满足等价于要求其子矩阵的最大值 (因为值域下界为 ,且已通过全局上限 限制)。对于任意格子,其填数上限为覆盖它的所有约束的最小值。若被约束 覆盖,则上限为
- (若 );
- (若 )。
因此,格子 在子集 下的上限为:
$$M_{i,j,S}=\min\Bigl(m,\;\min_{k\in T_{i,j}}\bigl(v_k-\mathbf 1_{k\in S}\bigr)\Bigr) $$其中 是覆盖格子 的约束集合, 为指示函数。
由于约束的矩形边界较少,采用离散化划分网格后对每个矩形区域处理即可。具体而言,将整个 网格按所有约束的行、列边界离散化,得到若干矩形区域。记每个区域 的面积为 ,且该区域内所有格子的覆盖集合均相同,记为 。我们对每个区域计算其在子集 下的上界:
$$M_r(S) \;=\;\min\Bigl(m,\;\min_{i\in T_r}(v_i - \mathbf{1}_{i\in S})\Bigr). $$区域 中共有 个格子,每个格子都可独立取值 到 ,方案数为:
因为各区域之间互不影响,整个网格在子集 下的方案数为各区域方案数的乘积:
$$F(S) \;=\;\prod_{r}\;\bigl(M_r(S)\bigr)^{A_r}\;\bmod\;(10^9+7).\\ \text{Ans} \;=\;\sum_{S\subseteq[n]}(-1)^{|S|}\,F(S) \;\bmod\;(10^9+7). $$
- 1
信息
- ID
- 575
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- (无)
- 递交数
- 80
- 已通过
- 10
- 上传者