美文网首页
Lutece Problem 528-输出前m大的数

Lutece Problem 528-输出前m大的数

作者: 小菜变大菜 | 来源:发表于2019-12-20 16:21 被阅读0次

题目

原题地址
利用快排的思想,首先将前m的数移至数组右边,然后用内置sort函数对这m个数排序,最后输出即可。
为什么不能直接全局sort,然后输出m个数呢?因为这样的题目数组特别大,复杂度特别高。这里我们运用快排的思想找到前m大的数只花费了O(n)的时间,另外排序花了O(m\log m),总复杂度为O(n+m\log m),比O(n\log n)小很多。

#include <iostream>
#include <algorithm>

using namespace std;
#define maxn 1000100
int A[maxn];
int n,m;

//将数组l到r位置前k大的数移到l到r位置的右边
void move_right(int *A, int l, int r, int k){
    if(l>r) return;
    int i=l,j=r;
    int key=A[l];
    while(i!=j){
        if(i<j&&A[j]>=key) --j;
        swap(A[i],A[j]);
        if(i<j&&A[i]<=key) ++i;
        swap(A[i],A[j]);
    }
    int len = r-i+1;
    if(len==k) return;
    else if(len>k) move_right(A, i+1, r, k);
    else move_right(A,l,i-1,k-len);
}

int main()
{
    while(cin>>n>>m){
        for(int i=0; i<n;i++) cin >> A[i];
        //memset(A, 0, sizeof(A));
        move_right(A,0,n-1,m);
        sort(A+n-m,A+n); //将右边的m个数升序排序
        for(int i=n-1;i>=n-m;i--) cout << A[i] << " ";
    }
    return 0;
}

相关文章

  • Lutece Problem 528-输出前m大的数

    题目 原题地址利用快排的思想,首先将前m的数移至数组右边,然后用内置sort函数对这m个数排序,最后输出即可。为什...

  • Lutece Problem 3-Bilibili, Acfun

    题目 输入观看视频的播放速度,缓冲速度,播放前等待时间和视频总时长,当播放到还未被缓存的地方,将从头开始播放(真烦...

  • Lutece Problem 95-Ants Run

    题目 https://acm.uestc.edu.cn/problem/ants-run/description输...

  • 排序练习

    题目描述:给你n个整数,请按从大到小的顺序输出其中前m大的数。输入:每组测试数据有两行,第一行有两个数n,m(0<...

  • 360 面试题(预测)

    输入M,N,输出M-N之间的所有水仙花数,如没有,输出no package LT; import java.uti...

  • 明星饭堂:卢特斯法国旋转餐厅

    Lutece,巴黎的旧称。一个浪漫的名字。 也寓意着将最传统、最正宗的传统法国美食。 Lutece餐厅提供正宗的法...

  • 進制的轉換【c++】

    原題地址 题目描述 将M进制的数X转换为N进制的数输出。 输入描述: 输入的第一行包括两个整数:M和N(2<=M,...

  • Polynomial Curve Fitting 多项式曲线拟合

    There remains the problem of choosing the order M of the ...

  • LeetCode刷题之Range Addition II

    Problem Given an m * n matrix M initialized with all 0's ...

  • ACM训练1.3

    J - Problem J 给定一个日期,输出这个日期是该年的第几天。 Input 输入数据有多组,每组占一行,数...

网友评论

      本文标题:Lutece Problem 528-输出前m大的数

      本文链接:https://www.haomeiwen.com/subject/pgjinctx.html