4和5TLE,我菜菜,求捞捞

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

Westly @ 2022-10-31 12:16:33

#include<iostream>
using namespace std;

void quick_sort(int q[] ,int l ,int r) {
    if(l>=r) return;

    int i=l-1 ,j=r+1 ,x=q[r];
    while(i<j){
        do i++; while(q[i]<x);
        do j--; while(q[j]>x);
        if(i<j) swap(q[i],q[j]);
    }
    quick_sort(q, l, i-1);
    quick_sort(q, i, r);
}

int q[100000000];

int main(){
    int n,m;
    scanf("%d%d",&n ,&m);
    for(int i=0;i<n;i++){
        scanf("%d", &q[i]);
    }
    quick_sort(q ,0 ,n-1);
    printf("%d", q[m]);

    return 0;
}

by fish_love_cat @ 2022-10-31 12:38:53

sort吸氧可A


by EgLund @ 2022-10-31 12:51:11

强烈安利 std::partial_sortstd::nth_element


by Zhangyanlin @ 2022-11-11 23:09:40

用sort+scanf/printf+O2优化即可 献上AC代码

#include<bits/stdc++.h>
using namespace std;
int m,k;
int a[5000000];
int main(){
    scanf("%d%d",&m,&k);
    for(int i=0;i<m;i++){
        scanf("%d",&a[i]);
    }
    sort(a,a+m);
    printf("%d",a[k]);
    return 0;
}

记得要开O2!!!要不然会TLE 这道题主要是cin和cout会严重超时,scanf和printf会相对快一些


|