题意:给你一个排列,定义序列中相邻的两个数为一个区间,要求最终的序列不能有相交的区间,问最多有几个数可以保留不动?
首先想到了最终序列是个什么样,然后也感觉不会像贪心了。
思路还是不够清奇。。。。
考虑每个数的下标,如果对一个合法序列重排序,那么可以发现他们下标是一个先递增再递减的。
比如 对于原序列 1 8 7 2 3 6 5 4,按照元素大小对下标重排序,
得到一个新排列 1 4 5 8 7 6 3 2
所以只要对原序列求一下新排列,正反两遍lis就可以了。
感觉以后应该多观察总结一下性质。
本文探讨了一道关于排列和区间的算法题目,分析了如何通过观察数列下标的变化规律,利用最长递增子序列(LIS)算法解决最多保留不动数的问题。通过正反两遍求LIS的方法,找到了解决问题的有效途径。
448

被折叠的 条评论
为什么被折叠?



