一类排列问题
问题1
题意:
给定\(n\),求有多少个\(n\)排列,满足相邻两项绝对值大于\(1\)
将位置看作点,对于点\(i,i+1\),将\(|a_i-a_{i+1}|\)看作边
考虑容斥,钦定边集不合法
考虑单个连通块的多项式\(f(x)=x-2x^2+2x^3-2x^4+\cdots=x\frac{1-x}{1+x}\)
对于点数大于等于\(2\)的,有正反两种排列顺序
枚举连通块的个数
\(F(x)=\sum\limits_{i=0}^{\infty} i!f(x)^i\)
对于一种分段的方法,确定每段最小值的顺序,即可唯一得到排列
那么答案为\([x^n]F(x)\)
令\(g(x)=\sum\limits_{i=0}^{\infty} i!x^i\)
注意到\(x^2\frac{dg(x)}{dx}+(x-1)g(x)+1=0\)
将\(g(f(x))=F(x),f(x)=x\frac{1-x}{1+x}\)带进去
通过该式容易得到线性递推
问题2
题意:
给定\(n\)、\(m\),求有多少个\(n\)排列,满足不存在长度超过\(m\)的相邻两项绝对值等于\(1\)
定义:若区间内相邻两项绝对值等于\(1\),则称其为连续区间
求不存在长度为\(m+1\)的连续区间,钦定有\(x\)个\(m+1\)的连续区间(可以相交),容斥系数为\((-1)^{x}\)
考虑钦定连续区间后,排列的方案数
观察:若两个连续区间有交,则区间并也为连续区间
将有交的连续区间合并
令\(y\)为连续区间的个数(合并后的,这里长度不一定为\(m+1\)),\(z\)为未被任意区间包含的位置个数
方案数为\((-1)^{x}(y+z)!2^y\)
以下区间均指合并后的区间
记\(f(i,j,k)\)表示把前\(i\)个点分成\(j\)个区间和\(k\)个无限制点的容斥系数和,
\(g(i,j,k)\)表示在上述条件下\(i\)作为区间末尾的容斥系数和
答案为
发现\(j\)这一维没啥用
答案为
问题3
定义连续区间为相邻两项差为\(1\),给定\(n,k\),求有多少个\(n\)排列恰好有\(k+1\)段极大连续区间
考虑容斥
令\(f_i\)为恰好有\(i\)段极大连续区间的方案数
令\(g_i\)为钦定\(i\)段的方案数(即钦定断点,段可能不为极大连续区间)
在求得\(\{g_i\}\)后,通过如下方式还原\(\{f_i\}\)
为方便表示,下面将\(f,g\)数组整体左移一位,此时表示至多\(i\)个满足\(|a_j-a_{j+1}|>1\)的位置
那么有\(g_i=\sum\limits_{j\le i}{n-1-j\choose i-j}f_j\)
这不是标准的二项式反演形式,不过我们可以改写成:\(g_i\cdot i!\cdot (n-1-i)!=\sum\limits_{j\le i}{i\choose j}f_j\cdot j!\cdot (n-1-j)!\)
令\(G_i=g_i\cdot i!\cdot (n-1-i)!,F_i=f_i\cdot i!\cdot (n-1-i)!\)
\(\{G_i\},\{F_i\}\)间是标准的二项式反演形式
考虑求\(\{g_i\}\)
\(g_k=k![x^n](x+2x^2+2x^3\cdots)^k=k![x^n](\frac{2x}{1-x}-x)^k\)
将括号拆开能化成卷积形式