错排
错排
定义错排d(x)为:长度为x的排列,并且对于任意i,第i位的数不是i的排列方案数。
求法1:无脑容斥。
至少有k个位置对应的数与下标相同的方案数为
d(x)相当于k=0的情况减k=1加上k=2...来容斥的结果。形式化表达为:
求法2:递推
另一种做法是考虑递推,考虑
- 大小为 2,那么剩下的所有是一个
的错排,方案数为 - 大小
,那么插入 之前就已经是一个错排了,枚举插入位置,方案数为
初值:
例题
[SDOI2016] 排列计数
求有多少种 1 ∼ n 的排列 a,满足恰有 m 个位置 i 使得
1 ≤ T ≤ 5 × 1e5,1 ≤ n ≤ 1e6,0 ≤ m ≤ 1e6。
从n中任意钦定m个位置:$\binom{n}{m}
剩下位置错排:
所以答案为
最后特判n=m时,答案为1
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具