【前缀和优化 dp】CF1542E1 Abnormal Permutation Pairs (easy version) 题解

发布时间 2023-10-18 09:34:30作者: Pengzt

CF1542E1

首先时间复杂度肯定是 \(\mathcal{O}(n^3)\) 的。

容易想到先枚举最长公共前缀,然后枚举 \(p_{len+1}\)\(q_{len+1}\),再枚举逆序对数进行统计。

\(f_{i,j}\) 表示有 \(j\) 个逆序对的 \(i\) 阶排列的个数。

易得转移 \(f_{i,j}=\sum\limits_{k=j-i+1}^{j}f_{i-1,k}\),使用前缀和可以做到 \(\mathcal{O}(n^3)\)

此时第一个数为 \(i\) 且逆序对数为 \(j\)\(n\) 阶排列的个数显然为 \(f_{n-1,j-i+1}\)

则答案可表示为

\[\sum\limits_{len=4}^{n}\dfrac{n!}{(n-len)!}(\sum\limits_{x=1}^{len-1}\sum\limits_{y=x+1}^{len}\sum\limits_{i=x+1}^{x+1+(len-1)(len-2)/2}\sum\limits_{j=y-1}^{i-1}f_{len-1,i-x+1}\times f_{len-1,j-y+1}) \]

默认 \(0!=1\),这是 \(\mathcal{O}(n^7)\) 的。

将式子稍微转化一下:

\[\sum\limits_{len=4}^{n}\dfrac{n!}{(n-len)!}(\sum\limits_{x=1}^{len-1}\sum\limits_{y=x+1}^{len}\sum\limits_{i=x+1}^{x+1+(len-1)(len-2)/2}f_{len-1,i-x+1}\times (\sum\limits_{j=0}^{i-y}f_{len-1,j})) \]

用前缀和可优化至 \(\mathcal{O}(n^5)\)

\(g_{i,j}=\sum\limits_{k=0}^{j}f_{i,k}\)

\(g\) 替代:

\[\sum\limits_{len=4}^{n}\dfrac{n!}{(n-len)!}(\sum\limits_{x=1}^{len-1}\sum\limits_{y=x+1}^{len}\sum\limits_{i=y}^{x+1-(len-1)(len-2)/2}f_{len-1,i-x+1}\times g_{len-1,i-y}) \]

直接看是不能再优化了,考虑交换一下后两个 \(\Sigma\) 的位置,并提出 \(f_{len-1,i-x+1}\),变为:

\[\sum\limits_{len=4}^{n}\dfrac{n!}{(n-len)!}(\sum\limits_{x=1}^{len-1}\sum\limits_{i=x+1}^{x+1+(len-1)(len-2)/2}f_{len-1,i-x+1}\times(\sum\limits_{y=x+1}^{\min(i,n)}g_{len-1,i-y}) \]

发现可以继续使用前缀和优化。

再变一下:

\[\sum\limits_{len=4}^{n}\dfrac{n!}{(n-len)!}(\sum\limits_{x=1}^{len-1}\sum\limits_{i=x+1}^{x+1+(len-1)(len-2)/2}f_{len-1,i-x+1}\times\sum\limits_{y=i-min(i,n)}^{i-x-1}g_{len-1,y}) \]

\(h_{i,j}=\sum\limits_{k=0}^{j}g_{i,k}\),带入原式:

\[\sum\limits_{len=4}^{n}\dfrac{n!}{(n-len)!}(\sum\limits_{x=1}^{len-1}\sum\limits_{i=x+1}^{x+1+(len-1)(len-2)/2}f_{len-1,i-x+1}\times (h_{len-1,i-x-1}-h_{len-1,i-len-1}\times[i>len])) \]

时间复杂度降至 \(\mathcal{O}(n^4)\)

已经可以通过 E1.

时间复杂度:\(\mathcal{O}(n^4)\)

空间复杂度:\(\mathcal{O}(n^3)\)

评测记录