• HDU 1425 sort


    Problem Description
    给你n个整数,请按从大到小的顺序输出其中前m大的数。
    Input
    每组测试数据有两行,第一行有两个数n,m(0<n,m<1000000),第二行包含n个各不相同,且都处于区间[-500000,500000]的整数。
    Output
    对每组测试数据按从大到小的顺序输出前m大的数。
    Sample Input
    5 3 3 -35 92 213 -644
    Sample Output
    213 92 3
    题解:哈希排序做法:用一个数组存取输入的数,然后标记,从后往前找到前 m 个大的数字。
     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 const int Maxn = 1000007;
     4 int a[Maxn];
     5 int main()
     6 {
     7     int m,n;
     8     while(~scanf("%d%d",&n,&m)){
     9         memset(a,0,sizeof(a));
    10         for(int i = 0; i < n; i++){
    11             int t;
    12             scanf("%d",&t);
    13             a[t+500000] = 1;
    14         }
    15         for(int i = Maxn; m > 0 ;i--){
    16                 if(a[i]){
    17                     if(m>1) printf("%d ",i-500000);
    18                     else printf("%d
    ",i-500000);
    19                     m--;
    20                 }
    21         }
    22     }
    23     return 0;
    24 }
    永远年轻 永远热泪盈眶!
  • 相关阅读:
    树状数组
    LCA最近公共祖先
    ordered_set
    马拉车算法
    数论
    图论
    其他
    线段树
    序列自动机
    优先队列
  • 原文地址:https://www.cnblogs.com/Edviv/p/11509834.html
Copyright © 2020-2023  润新知