提交多次TLE

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

TLE_Forever @ 2020-07-30 10:06:46

#include<iostream>
#include<algorithm>
#define MAXN 5000000
using namespace std;
int n,k,a[MAXN],cnt=0;
void QuickSort(int l,int r) {
    int i=l,j=r,mid=a[(l+r)/2];
    do{
        while(a[i]<mid) i++;
        while(a[j]>mid) j--;
        if(i<=j) {
            swap(a[i],a[j]);
            i++; j--;
        }
    }while(i<=j);
    if(l<j) QuickSort(l,j);
    if(i<r) QuickSort(i,r);
}
int main() {
    cin>>n>>k;
    for(int i=0;i<n;i++) cin>>a[i];
    QuickSort(0,n-1);
    for(int i=0;i<=k;i++)
        if(i==k) cout<<a[i]<<endl;
    return 0;
}

最后两个数据点一直TLE,O2优化没有用QwQ


by xiaozeyu @ 2020-07-30 10:49:39

你要根据自己使用的变量类型改动,比如我这里

inline long long read()

long long x=0;

这是用long long 的,

inline long long read()
{
    char c=getchar();long long x=0;bool f=0;
    while(!isdigit(c))f^=!(c^45),c=getchar();
    while(isdigit(c))x=(x<<1)+(x<<3)+(c^48),c=getchar();
    if(f)x=-x;return x;
}

如果要用int的话:

inline int read()
{
    char c=getchar();int x=0;bool f=0;
    while(!isdigit(c))f^=!(c^45),c=getchar();
    while(isdigit(c))x=(x<<1)+(x<<3)+(c^48),c=getchar();
    if(f)x=-x;return x;
}

就这样改这两个变量


by 一只小H @ 2020-07-30 12:45:47

@一只小HQAQ 不一定要o2吧


by zyz1126 @ 2020-07-31 14:36:46

@xiaozeyu 我也用快读,但是不太懂,没想到还有小数快读,谢谢啦


by xiaozeyu @ 2020-07-31 14:38:22

@一只小HQAQ @自己好评


上一页 |