
题意
给你一个序列,然后现在你每次从里面取出两个相邻的值,然后拉出来放在答案数组前面。然后空位合拢。问最小字典序情况下的答案数组是什么。
思考历程
一开始感觉好熟悉的亚子,然后我刚推完样例就知道了。
我™做过。
题解
我们发现,原题可以转化成给他打括号。
然后括号匹配起来就好了。
于是我们就可以用贪心的方法,分别维护奇数位和偶数位的最小值。
然后我们就可以每次找到两个当前最优位置(一定要保证左右两边空格数为合法的),然后递归左边,中间,右边分别取找。
每个位置只会走一次,而且最多只有n/2层,O(n log n)绰绰有余,其实打rmq可以做到O(n)。
没打代码,但是这个思路很妙,写一下思路提醒一下自己吧。