P4859 已经没有什么好害怕的了
显然我们可以解出 \(a_i>b_i,a_i<b_i\) 的分别有 \(x,y\) 组。
首先,我们把这个东西当成一个配对,可以考虑一下把所有的数合并到一起排序。
然后显然可以有一个 dp,记 \(dp_{i,cnt,p_1,p_2}\) 表示我们目前考虑到了第 \(i\) 个数,当前满足 \(a_i>b_i\) 的数对有 \(cnt\) 个,前 \(i\) 个数里剩下没有配对的 \(a,b\) 分别有 \(p_1,p_2\) 个。
转移是显然的,总复杂度 \(O(n^4)\)。考虑优化,没有优化。
我们发现限制“恰好” \(k\) 个着实有些问题,我们考虑容斥花费一定时间的代价把它转化成“至少” \(k\) 个。
我们设恰好 \(k\) 个是 \(f(k)\),至少 \(k\) 个是 \(g(k)\),我们有
\[g(k)=\sum_{i=k}^nf(i)\binom{i}{k}
\]
由二项式反演,我们可以得到
\[f(k)=\sum_{i=k}^n(-1)^{i-k}g(i)\binom{i}{k}
\]
我们成功以 \(O(n)\) 的代价转移了问题,现在考虑子问题怎么做。
不会。
“至少” \(k\) 个该怎么解决呢?我们考虑只去限制这 \(k\) 个组。
考虑记 \(dp_{i,j}\) 表示我们考虑到 \(a_i\),当前至少有 \(j\) 个组满足条件,记 \(c_i\) 表示有多少个 \(b\) 可以和 \(a_i\) 配成合法对。
\[dp_{i,j}=dp_{i-1,j}+(c_i-(j-1))dp_{i-1,j-1}
\]
那么我们有
\[g(k)=dp_{n,k}(n-k)!
\]
至此,我们在 \(O(n^2)\) 内解决了问题。

浙公网安备 33010602011771号