hack两篇题解

P1923 【深基9.例4】求第 k 小的数

P31pr @ 2024-12-05 20:08:44

@sunzz3183 和 @TRZ_2007 的题解给出的代码实现细节有问题,在 n 个数字全相等且 k = O(n) 时,时间复杂度会退化到 O(n^2)

以下是一个简单的 gen:

#include<cstdio>

int main()
{
    int n = 2e6;
    printf("%d %d\n",n,n-1);
    for(int i=1;i<=n;++i)
        printf("1 ");
    return 0;
}

我个人比较容易理解的方法是三路分划,即左边是小于基准数的元素,中间是等于基准数的元素,右边是大于基准数的元素。


by 蒟蒻君HJT @ 2024-12-09 12:25:24

周神!


by P31pr @ 2024-12-25 20:29:28

@蒟蒻君HJT???曹神!


|