令 $P'_i=P_i-i$,这样每次移动就是直接移到上一个或下一个企鹅的位置,而不是有 $1$ 的距离。容易发现这时答案一定可以表示为 $N+1$ 个间隔长度的线性组合加上一个常数。
令 $f(n,i)$ 表示剩余 $n$ 个企鹅时第 $i$ 段间隔(第 $i-1$ 和第 $i$ 个企鹅之间)的系数,讨论下一次操作,可以得到以下转移: $$ f(n,0)=\frac{1}{n}f(n-1,0)+\frac{1}{2n}+\frac{n-1}{n}f(n,0)\\ f(n,n)=\frac{1}{n}f(n-1,n-1)+\frac{1}{2n}+\frac{n-1}{n}f(n,n)\\ f(n,i)=\frac{1}{2n}f(n-1,i-1)+\frac{1}{2n}f(n-1,i)+\frac{1}{n}+\frac{1}{2n}f(n,i-1)+\frac{1}{2n}f(n,i+1)+\frac{n-2}{n}f(n,i) $$ 对于每个 $n$ 我们可以设 $f(n,1)$ 为未知数 $x$,将所有 $f(n,i)$ 表示为 $kx+b$ 的形式,然后解方程得到 $x$。
对于常数部分,令其为 $g(n)$,主要来源于当最左边或者最右边的企鹅掉落时,新的段的长度除了左右两段合并,还会额外加 $1$,因此可以得到: $$ g(n)=\frac{1}{n}g(n-1)+\frac{1}{2n}f(n-1,0)+\frac{1}{2n}f(n-1,n-1)+\frac{n-1}{n}g(n) $$ 总时间复杂度 $O(N^2+TN)$。