【做题记录】雅礼集训2018 方阵
-
【雅礼集训 】方阵
- 算法:斯特林反演
题目:
给定 的矩阵,每个格子填上 的数字,求任意两行、两列均不同的方案数。
题解:
设 表示 的矩阵中任意两行不相同的方案个数。
从第一行往下推,第一行显然有 种( 中每个都能选),而第二行则在 的基础上减去 种,(即第一行的方案),之后的类比。
第 行 | 对于 当前行的方案数 |
---|---|
第一行的方案数 | |
第二行的方案数 | |
第 行的方案数 |
不难看出 ,
即 。
设 表示 的矩阵任意两行两列都不相同。
不妨从 中枚举有多少个本质不同的列,设有 个。
对于 ,其方案数又可以由 表示为
简单解释,就是 相当于对于 的 之和,因为 不需要保证列不相同,所以大力枚举能每种 ,然后对于每一种 ,都要相当于从 列中挑选出 列使它们互不相同,那么也就是 。
但是我们是要求出 ,而且对于 我们有更为简单的方式(),所以我们考虑通过 来求出 。
那么可以用斯特林反演。
套用模板,得
就可以求出 。
总的时间复杂度为
本文作者:trsins
本文链接:https://www.cnblogs.com/trsins/p/15776590.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步