bzoj 1318 [SPOJ744] Longest Permutation (排列)

大意: 给定序列, 求选出一个长度为k的区间, 使得区间内的数为[1,k]的排列, 且要求k最大

这题好神啊.

每个排列有且仅有一个1, 我们按1将序列分成若干子问题来处理, 而每个位置最多属于两个子问题, 所以复杂度还是$O(n)$的.

假设最大值在当前1的左侧, 每个数向右最大延伸的距离可以预处理出来, 就从1开始向左滑动, 维护当前最大值k, 排列用和为k*(k+1)/2来O(1)判断即可, 最大值在右侧时同理.

复杂度$O(n)$

猜你喜欢

转载自www.cnblogs.com/uid001/p/10455007.html