re了

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

danzai10 @ 2023-09-04 13:21:14


#include<bits/stdc++.h>
using namespace std;
int main() {
    int n,a[1005],b,c;
    cin>>n>>b;
    for(int i=0; i<n; i++)cin>>a[i];

    for(int i=0; i<n-1; i++) {
        for(int j=0; j<n-i-1; j++) {
            if(a[j]>a[j+1])swap(a[j],a[j+1]);
        }
    }
    cout<<a[b]<<" ";
    return 0;
}

by ljc888 @ 2023-09-04 13:28:41

你数组开小了


by ljc888 @ 2023-09-04 13:29:10

他说“1≤n<5000000 ”


by ljc888 @ 2023-09-04 13:32:23

如果对你有帮助可以关注一下吗?谢谢!


by ljc888 @ 2023-09-04 13:32:35

@danzai10


by ljc888 @ 2023-09-04 13:38:40

哦,对于你的代码,如果改回来还是会T,因为你的时间复杂度是O(n^2)你需要把你的循环改成nth_element,还要加一个快读,或者scanf:

#include<bits/stdc++.h>
using namespace std;
long long n,a[5000010],b,c;
int main(){
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    cin>>n>>b;
    for(int i=0; i<n; i++)cin>>a[i];
    nth_element(a,a+b,a+n);
    cout<<a[b]<<" ";
    return 0;
}

by cute_overmind @ 2023-09-04 13:45:50

@ljc888 请尽量不要使用 nth_element 来写本题,因为本题的重点在于练习分治算法。

这是题目上说的 个人看法而已


by danzai10 @ 2023-09-08 19:43:46

谢谢,已关。


|