zoukankan      html  css  js  c++  java
  • 不重复数字(luogu 4305)

    题目描述

    给出N个数,要求把其中重复的去掉,只保留第一次出现的数。

    例如,给出的数为1 2 18 3 3 19 2 3 6 5 4,其中2和3有重复,去除后的结果为1 2 18 3 19 6 5 4。

    输入输出格式

    输入格式:

     

    输入第一行为正整数T,表示有T组数据。

    接下来每组数据包括两行,第一行为正整数N,表示有N个数。第二行为要去重的N个正整数。

     

    输出格式:

     

    对于每组数据,输出一行,为去重后剩下的数字,数字之间用一个空格隔开。

     

    输入样例
    2
    11
    1 2 18 3 3 19 2 3 6 5 4
    6
    1 2 3 4 5 6
    输出样例
    1 2 18 3 19 6 5 4
    1 2 3 4 5 6

    说明

    对于30%的数据,1 <= N <= 100,给出的数不大于100,均为非负整数;
    对于50%的数据,1 <= N <= 10000,给出的数不大于10000,均为非负整数;
    对于100%的数据,1 <= N <= 50000,给出的数在32位有符号整数范围内。 T50


     解析:

    在这么大的数据中,来判断是否有重数,第一想到的就是桶排,但数在 32位有符号整数 ,多么吓人的大小,绝对不能硬开桶,最多才有 5*10^4,的数,这时就需要用到哈希表,把数的范围控制在 mod 以内

     代码如下:

    #include<stdio.h>
    #include<algorithm>
    #include<string.h>
    #include<map>
    using namespace std;
    const int p=1e5+7;
    int mp[p];
    
    int hash(int x){
        return x%p;
    }
    
    int ser(int x)
    {
        int y;
        if(x<0) y=hash(-x);
        else y=hash(x);
        while(mp[y] && mp[y]!=x) y=hash(++y);
        return y;
    }
    
    void push(int x){
        mp[ser(x)]=x;
    }
    
    bool check(int x)
    {
        return mp[ser(x)]==x;
    }
    
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            int n;
            scanf("%d",&n);
            while(n--)
            {
                int x;
                scanf("%d",&x);
                if( !check(x) ){
                    printf("%d ",x);
                    push(x);
                }
             }
            printf("
    ");
            memset(mp,0,sizeof(mp));    
        }
        return 0;
    }

     

    从0到1很难,但从1到100很容易
  • 相关阅读:
    java+opencv实现图像灰度化
    java实现高斯平滑
    hdu 3415 单调队列
    POJ 3368 Frequent values 线段树区间合并
    UVA 11795 Mega Man's Mission 状态DP
    UVA 11552 Fewest Flops DP
    UVA 10534 Wavio Sequence DP LIS
    UVA 1424 uvalive 4256 Salesmen 简单DP
    UVA 1099 uvalive 4794 Sharing Chocolate 状态DP
    UVA 1169uvalive 3983 Robotruck 单调队列优化DP
  • 原文地址:https://www.cnblogs.com/qseer/p/9418803.html
Copyright © 2011-2022 走看看