最小操作次数(记为 \(k\))即为将序列倒着找第一个 \(P[i]>P[i+1]\) 的下标,然后将序列分成三部分:前缀部分(待转移部分),\(k\),后缀部分(不需转移部分)。
用树状数组维护前缀部分每一个数挪到后缀部分所需的最小代价(即插到第一个小于它的数前)(这部分完全可以用线段树做)。
注册一个 Vijos 通用账户,您就可以在我们提供的所有在线评测服务上提交代码、参与讨论。
使用您的 Vijos 通用账户