关于这道题堆做法的时间复杂度分析
查看原帖
关于这道题堆做法的时间复杂度分析
308384
Morpheuse楼主2022/3/1 19:31

考虑用大根堆来优化取 maxmax 操作.

理论上来说如果想要卡第 nn 个数 ana_n 的最坏情况(取堆顶 n1n - 1 次)就需要前面 n1n - 1 个数的二进制下各个位置都与 ana_n 不同 .

显然若 an=(100000000)2a_n=(100000000)_2 时有 282^8 个数字可以选择 但是为了构造最坏情况 an1a_{n-1} 应该取 (10000000)2(10000000)_2 那剩下的 n3n - 3 个数字只有 272^7 个数字可以选择.

那同样构造最坏情况 an2a_{n-2} 应该为 (1000000)2(1000000)_2.

以此类推复杂度应该是 O(nlog2n)O(nlog^2n) 但是我总是感觉哪里怪怪的 求大佬指正一下

2022/3/1 19:31
加载中...