Loading

AT_agc032_d [AGC032D] Rotation Sort

考虑你一个操作在干什么,就是将某个元素往前扔或者往后扔。

注意到一个事情,如果一个元素扔了两次,那么一定不如一次直接扔到位,因为两次扔的方向绝对是相同的,不然没有意义

那么问题就变成了,每个元素可以进行一次操作,形如向前扔或者向后扔,设 \(f_{i, j}\) 为操作前 \(i\) 个数,能够留下 \(j\) 的最小代价,注意到留下的 \(j\) 必定是递增的,所以用个 DP 维护即可,当然,你也可以用线段树直接维护区间 \(\min\) 和整体修改做到 \(O(n \log n)\) 的优秀复杂度。

需要对题目操作有很深刻的理解。

posted @ 2025-09-26 15:32  Alexande  阅读(6)  评论(0)    收藏  举报