问题简述 给出一个长度为N (1 ≤ N ≤ 30,000)的整数数组D[],其中1 ≤ D[i]≤ 3 。 要求通过该动元素的值的方式(但是不能改出1,2,3之外),使得数组有序(不升序或者不降序都行)。 问最少需要改动多少个元素。 分析 这是POJ3671[1]的强化版本,同样可以划归为LIS问题[2]问题,用O(nlogn)的算法求解。 但是和POJ3671[1]一样,实际上这个问题也是存在O(n)的算法的。 具体思路和POJ3671的O(n)解法[1]大同小异。 先只考虑排成不降序的情况,观察最后形成的有序数组,由于元素只能是1,2,3,所以它必然是如下形式: 11111….122222….23
POJ3670 Eating Together – 解题报告
Reply