HDU 6635 Nonsense Time
题面
题意
一个随机生成的长度为$n$的排列,刚开始这些数字全都被封印,接下来$n$次操作,每次把一个数解封,对于每次操作,查询当前数组$LIS$的长度。
思路
我们逆向思考,对于给定的数组每次删去一个数,相邻两次操作的答案不会超过$1$,对于第$i$次操作我们随便求一个$LIS$,如果第$i+1$次操作删除的数字在这个$LIS$内,我们就要重新求$LIS$,否则答案保持不变,由于随机生成的全排列$LIS$长度的期望为$\sqrt n$,因此最多计算$\sqrt n$次$LIS$,复杂度$O(n \cdot \sqrt n \cdot log(n) )$。
代码
1 |
|