【题解】ARC126D 状压DP、费用提前、折半处理
考虑选取子序列 \(I(c_1,c2,...c_k)\) ,我们能唯一确定其代价。
令位置 \(\text{mid} =\lceil \dfrac{k}{2} \rceil\) ,将 \(\text{mid}\) 左边和右边的所有位置调整到 \(\text{mid}\) 。
使得这些位置是一段连续的子段,那么代价即调整的代价 + 逆序对数。
调整的代价为(对于 \(k\) 是奇数来说):
\[\sum_{i < mid} (c_{\text{mid}}-\text{mid}-i)-c_i + \sum_{i > \text{mid}} c_i - (c_{\text{mid}} + i - \text{mid})
\]
可以写成如下形式:
\[\sum_{i} a_i c_i+b,a_i\in \{0,-1,1\}
\]
将费用 \(b\) 提前计算。
那么代价即右边的下标和减去左边的下标和。
折半处理。
从左往右 \(dp\) 一遍,从右往左 \(dp\) 一遍即可。