关于排序
  • 板块学术版
  • 楼主Terraria
  • 当前回复17
  • 已保存回复17
  • 发布时间2021/8/24 13:23
  • 上次更新2023/11/4 09:13:41
查看原帖
关于排序
289275
Terraria楼主2021/8/24 13:23
  • 时间限制 1s1sn107n \leq 10^7。请问值域开到多少可以卡掉基数排序?

  • 例如有这么一个问题:

给定一个序列 aa,将 aa 从小到大排序。

n107,ai109n \leq 10^7,a_i \leq 10^9

我自己想了一个奇怪的排序方法:

选择一个数 kk,例如 k=5×103k=5 \times 10^3。对于每一个数,都算出这个数除以 kk 得到的商和余数。那么显然,商的值不会大于 2×1052 \times 10^5,余数的值不会大于 5×1035 \times 10^3。首先我先按照商从小到大,这个用桶排。然后对于商相等的数,再用桶以余数从小到大排序。那么最终的序列就是商乘以 kk 加上余数。

所以我那个思路可以吗?我觉得如果这个思路可行,那么对于 n107,ai1012n \leq 10^7,a_i \leq 10^{12} 都可以使用 O(n)O(n) 排序(kk10610^6)。

2021/8/24 13:23
加载中...