2024/9/24
[CQOI2011] 放棋子
因为不同颜色的棋子不能在同一行或同一列,所以可以将不同颜色的棋子分开来考虑。
对于每一种颜色,转移时用总方案数减去不合法的方案数,也就是存在行或列没有棋子的方案数。
最后再把每种颜色合并起来即可。
[AGC043D] Merge Triplets
让我们考虑什么样的排列
可以得出一个性质,排列
也就是说,若我们按照前缀 max 来划分序列,那么没有一段的长度会大于
但这并不充分,我们还需要保证长度为
因为我们在构造序列
所以,我们设
转移是平凡的。
时间复杂度
[AGC059C] Guessing Permutation for as Long as Possible
让我们考虑三个数
不然我们总可以从
所以我们可以用 2-sat 或者并查集来维护每个数之间的关系。
每一个连通块之间的关系可以唯一确定一个排列,所以设连通块个数为
[ARC117C] Tricolor Pyramid
我们给每种颜色赋上一个数
我们可以发现,对于一个颜色为
可以发现最下面积木对对最顶层积木贡献的形式就是杨辉三角。
可以用卢卡斯定理来求组合数。
[AGC035D] Add and Remove
每删除一个数,这个数就会对它左边和右边的数造成贡献。
其中,第
考虑从最后一个被删除的数开始 dp,设
那么有
直接暴力 dfs 的时间复杂度
[EGOI 2022] Lego Wall
积木有两种,分别是
可以发现,若两列是联通的,当且仅当这两列之间存在一个
由此,我们可以设计出一个
那么有转移
但
注意到
刚才我们是一列一列的来考虑,现在我们一行一行的来考虑。
对于单独的一行,它的方案数为
同时,我们设
时间复杂度为
我们只需要将上述的两种做法合在一起就行了。
平衡过后的复杂度为
待补
- [AGC036F] Square Constraints
- [AGC058D] Yet Another ABC String
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现