【CF908E】New Year and Entity Enumeration(观察,结论)
给定集合 ,考虑其生成集合 将会是啥样。
将 个位划分成若干个等价类,使得若 在同一等价类,对于任意 有 的第 位都是一样的。显然经过取反和按位与之后,原来相等的位置间仍然是相等的,那么刚刚那个条件应该对任意 也成立。
另一方面,假设共有 个等价类,我们说明 的大小恰为 ,即任意对每个等价类选取为 所得到的数都在 中。
首先,容易通过取反和按位与构造出按位或(类似 )。然后,通过将 中所有第 个等价类为 的数按位与起来,就能得到一个数,它只有第 个等价类为 而其他等价类为 。再通过把若干个这种数按位或起来即可得到任意想要构造的数。
于是 的形态只与所有等价类的形态有关。回到原问题, 相当于已经给出了若干个等价类(称为基础等价类),而我们可以在此基础上对每个等价类划分出更细的等价类,然后得到 。那么总方案数即为每个基础等价类的集合划分数的乘积。
如何找基础等价类?对每个位在哪些数内为 进行状压,哈希值相同的就是同一个等价类。
集合划分数的求法:可以用第二类斯特林数的列和,也可以枚举第一个位所在的等价类大小递推。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现