操作等价与转化
一次合并操作会将两个元素从序列中移除,并将它们的和插入到序列的任意位置。如果我们只关心最终序列是否非递减(每个元素均不大于其后继元素),那么合并操作可以看作一次性去掉了两个“不希望保留”的元素。
因此,若需要从原序列中删去 Δ 个元素才能使剩余部分非递减,那么最少操作次数就是 ⌈2Δ⌉(等价于 (Δ+1)/2 次合并)。
最小删除数
要使剩余部分非递减,等价于保留一个尽可能长的非递减子序列。设原序列长度为 n,最长非递降子序列(Longest Non-Decreasing Subsequence, LNDS)的长度为 L,则最少需要删除的元素个数为:
Δ=n−L
给定一个由正整数组成的序列。你希望通过最少的操作次数,把序列变成一个非递减的序列,即每个元素都不大于它后面的元素。
你可以执行的操作如下:
请问,最少需要执行多少次这样的合并操作,才能使最终的序列成为非递减序列?
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.