POJ 2182 Lost Cows

博客围绕POJ 2182 Lost Cows问题展开,该问题是已知N个数乱序排列及每个数前比它小的数的数量,求排列顺序。介绍了初始算法,即从后往前在待选集合中找数并删除。还探讨了优化方法,使用线段树,利用其区间内集合数信息二分查找,减少时间复杂度。

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从待选集合里删除

现在如何优化这个算法?

线段树

线段树的附加信息是这个区间内还存在多少集合内的数。这样每次找第几个的时候,就可以二分去找,从而减少时间复杂度

Code

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值