POJ 2182 Lost Cows
Description
N个数,1…N,乱序排列,现在告诉你每个数的前面有多少个比它小的,问排列顺序是什么?
Algorithm
一开始待选集合是1…N,从后往前,每次找到第x+1个数,然后把这个从待选集合里面删除
例如 1 2 1 0 从后往前
第一次 x = 0 从待选集合1 2 3 4 5 里找第0 + 1个数, 也就是 1, 把 1 从待选集合里面删除
第二次 x = 1 从待选集合 2 3 4 5 里找第 1 + 1 个数,也就是 3,把3从待选集合里删除
现在如何优化这个算法?
线段树
线段树的附加信息是这个区间内还存在多少集合内的数。这样每次找第几个的时候,就可以二分去找,从而减少时间复杂度
博客围绕POJ 2182 Lost Cows问题展开,该问题是已知N个数乱序排列及每个数前比它小的数的数量,求排列顺序。介绍了初始算法,即从后往前在待选集合中找数并删除。还探讨了优化方法,使用线段树,利用其区间内集合数信息二分查找,减少时间复杂度。

2023

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



