[CQOI2011] 放棋子
前言
偶遇重庆题目, 害怕
上午 + 大半个下午浪费了太多时间, 不过好歹也是搞得比较明白, 下午冲一下进度
思路
听过了捏, 忘了捏, 以后还是听了直接补好一点
转化题意
在
的矩阵中填上颜色, 其中颜色 要填 个, 要求同一行和同一列不能有异色块, 求有多少种方案满足要求
先考虑朴素计算, 我们可以令
考虑转移
考虑
我们考虑
问题转化为计算
再转化一下
对于一个
的矩阵, 要求每一行每一列至少要填上一个数, 总共填了 个数的方案数
怎么做捏? 好像很典
首先转化成「恰好」类型的问题
对于一个
的矩阵, 恰好有 行填了颜色, 恰好有 列填了颜色, 恰好填了 个数的方案数
考虑用「选择」类问题的方式, 逐渐拆开限制
以下都保证恰好填了
首先令
开演
容易发现
更显然的,
为了写代码化简一下
结束了
总结
一类转移系数需要使用特殊方法解决的题目
注意使用二项式反演之前至少要转化成「恰好」形式
常见的填色
「选择」类问题的特色:
- 限制等价
- 「恰好」转「至多 / 至少」
vivo 50
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探