求满足下述条件的 n 阶排列 a 的数目:对每个 i,要么 ai−i≤aj−j+d 对所有 j>i 成立,要么 ai≥aj 对所有 j<i 成立,这两个条件至少成立一个。
通过打表得知 d=−1 时,答案是 2n;d=0 时,答案是 Fib2n−1;d=1 时,答案是 3n−12 。或许你可以对更多的 d 解决这个问题!
对于一个 n 阶排列 a 的某个元素 ai,定义:
- 若 i=n,或对所有 j>i,有 ai−i≤aj−j+d,则称 ai 具有性质 F。
- 若 i=1,或对所有 j<i,有 ai≥aj,则称 ai 具有性质 G。
求满足下述条件的 n 阶排列 a 的数目:所有元素至少具有性质 F 和性质 G 中的一个。
称满足条件的排列为好排列。我们将证明好排列的数目是 f2n−1,
其中 f 定义为 f0=0,f1=1,fn+2=fn+1+fn(n∈N) 是斐波那契数列。
用归纳法,n=1,2 时显然成立。设 n≥3。
首先当 a1=1 时,设 n−1 阶排列 b=(a2−1,a3−1,⋯an−1),容易发现 a 是好排列等价于 b 是好排列。而 a 和 b 构成一一对应,所以 a1=1 时好排列 a 的数目为 f2n−3。
当 a1>1 时,假设 ak=1,我们断言 ak+i−1=i 对 1≤i<a1 成立。(∗)
用反证法。若 1≤j<a1 使得 ak+j−1≠j,设 j 是最小的这样的数。记 ap=j。
- 若 1<p<k,则 ap−p=j−p>1−k=ak−k,ap 不具有性质 F;ap=j<a1,ap 不具有性质 G。矛盾。
- 若 k+j≤p≤n,则 ak−k=1−k>j−p=ap−p,ak 不具有性质 F;ak=1<a1,ak 不具有性质 G。矛盾。
构造排列 b:将排列 a 中所有属于区间 [2,a1] 的值删掉,然后对 bi≠1,用 bi−a1+1 代替 bi。例如,a=(4,5,1,2,3,7,6) 时,b=(2,1,4,3)。注意由性质(∗),在 a1 固定的情况下,a 到 b 是一一对应。不难证明 a 是好排列等价于 b 是好排列,而 b 的长度为 n−a1,从而固定 a1>1 时好排列 a 的数目为 f2n−2a1+1。
因此 n 时的好排列数目等于 f2n−3+∑n−1i=1f2i−1=f2n−3+∑n−1i=1(f2i−f2i−2)=f2n−3+f2n−2=f2n−1。
综上,所求答案为 f2n−1=1√5((1+√52)2n−1−(1−√52)2n−1)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具