题解:CF2003E2 Turtle and Inversions (Hard Version)
ran_qwq
·
·
题解
区间不相交怎么做?先来一大波观察。
对不在区间的数,一定是和前缀序列接上,或者和后缀序列接上,且对于一段连续不在区间的数不可能一些接前缀一些接后缀。
结合数据范围考虑 dp,设 $f_{i,j}$ 为前 $i$ 个区间,包括在区间与不在区间的数前缀序列当前长度为 $j$ 的最小**顺序对**数。
- 对区间,转移枚举当前区间前缀放 $k$ 个,后缀会和之前区间的前缀产生贡献。
- 对不在区间的数,有接上前缀序列和后缀序列两种转移。
区间总长度是 $O(n)$ 的,故复杂度 $O(n^2)$,通过 E1。
现在区间会相交。每个区间都要划分出前缀和后缀,但如果一个数既在前缀又在后缀一定不合法。所以对区间取并,每个大区间中的所有区间断点要相同,如果这些区间无交或者交集为 $1$ 就无解。否则变成强制断点处于这些区间的交,做一遍 dp。
[代码。](https://codeforces.com/contest/2003/submission/383551936)