- 插入排序
T2插入排序
- 2024-9-30 21:25:58 @
T2插入排序
这个题目可以模拟来做,也可以用树状数组。
考虑到普及组的同学学过树状数组的可能不太多,这里介绍模拟的做法。
这里设计到查询查询元素的原位置,所以用结构体存储值和原来的位置。
题目中有至多5000次的单点修改,每次修改完直接sort()排序时,复杂度为5000 * n * logn,会超时。
熟悉插入排序的话,会发现排序后的元素修改单个元素后的o(n)的时间内就可以完成调整使数组重新有序。单点修改的操作计算量可以优化为 5000 * n.
再结合数据范围来看,查询的次数比较多,而且查询的是原来某个元素排序后的位置,而且这种查询次数在 105 这个级别,所以我们可以把这个数据提前存储下来,从而实现 o(1) 的查询。
这样的话总计算量是 n* logn + 5000 * n + q,结合数据范围看,可以AC。
0 条评论
目前还没有评论...
信息
- ID
- 900
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 17
- 已通过
- 8
- 上传者