专栏文章
P13618 题解
P13618题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @minkk3oh
- 此快照首次捕获于
- 2025/12/02 03:55 3 个月前
- 此快照最后确认于
- 2025/12/02 03:55 3 个月前
模拟赛考到这个题了,记录一下。
下面的 , 表示题目中的 。
题目里面说了任意两个 矩形内黑,白格子数量都相同。差分相邻的矩形 ,容易发现 。由此可以将所有位置按照横轴 ,纵轴 的余数一共分为 个等价类。
我们发现一个等价类内如果出现了两个位置 满足 就一定有 ,则此时 与 的取值就已经固定了,另一维同理。所以对于每一个等价类,要么是每行内所有元素相同,要么是每列内所有颜色相同。因此,直接确定左上角 大小的网格就可以确定每个等价类的情况。
考虑枚举左上角 个位置的情况,从当前一行推到下一行时,我们只需要保证所有行相同的位置中 的个数要一样多。同理推到下一列时列相同的位置中 的数量要一样多。若有 个行相同的位置,考虑在这里面选出所有的 ,因为整个矩形中一共出现 次,所以方案数就是 ,列的方案数同理。
但这样我们忽视了一个问题:有的等价类可能每行与每列都相同,此时会算重。考虑在行相同/列相同中容斥掉这一部分,设一开始总方案数 ,实际上的总方案数 ,定有 个位置对应全部相同则有 。
最终答案即为每行每列方案数之积。直接枚举复杂度是 的,无法接受。我们考虑按行转移,记录当前列相同的数量然后枚举这一行每个位置的情况,每行填完再乘上这一行对应的行的方案数,可以做到 ,常数相当小可以通过。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...