HDU1425整数HASH

来源:互联网 发布:人体工学椅 知乎 推荐 编辑:程序博客网 时间:2024/05/16 19:40

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1425

由于题目数据很水所以用快排居然也过了

但是必须知道的是 一般情况下当数据范围超过1e5的时候快排就会超时的

快排的时间复杂度为O(nlog(n)),而此题 为O(n);

快排

#include <iostream>#include <cstdio>#include <algorithm>using namespace std;int a[1000000];bool cmp(int a,int b){    return a>b;}int main(){    int n,m;    while(~scanf("%d%d",&n,&m))    {        for(int i=0;i<n;i++)            scanf("%d",&a[i]);        sort(a,a+n,cmp);        for(int i=0;i<m-1;i++)            printf("%d ",a[i]);        printf("%d\n",a[m-1]);    }    return 0;}

hash

#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int maxn = 1000005;int a[maxn];int main(){    int n,m;    while(~scanf("%d%d",&n,&m))    {        int t;        memset(a,0,sizeof(a));        for(int i=0;i<n;i++)        {            scanf("%d",&t);            a[500000+t]=1;        }        for(int i=1000001;m>0;i--)        {            if(a[i])            {                printf("%d",i-500000);                if(m>1)                    printf(" ");                else                    puts("");                m--;            }        }    }    return 0;}


0 0
原创粉丝点击