zoukankan      html  css  js  c++  java
  • bzoj2761: [JLOI2011]不重复数字

    2761: [JLOI2011]不重复数字

    Description

    给出N个数,要求把其中重复的去掉,只保留第一次出现的数。
    例如,给出的数为1 2 18 3 3 19 2 3 6 5 4,其中2和3有重复,去除后的结果为1 2 18 3 19 6 5 4。
     

    Input

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

    Output

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

    Sample Input

    2
    11
    1 2 18 3 3 19 2 3 6 5 4
    6
    1 2 3 4 5 6

    Sample Output

    1 2 18 3 19 6 5 4
    1 2 3 4 5 6

    HINT

    对于30%的数据,1 <= N <= 100,给出的数不大于100,均为非负整数;


    对于50%的数据,1 <= N <= 10000,给出的数不大于10000,均为非负整数;


    对于100%的数据,1 <= N <= 50000,给出的数在32位有符号整数范围内。


    提示:


    由于数据量很大,使用C++的同学请使用scanf和printf来进行输入输出操作,以免浪费不必要的时间。


    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include<cmath>
    #include<algorithm>
    #include<map>
    #define qread(x)x=read();
    using namespace std;
    typedef long long LL;
    inline LL read()
    {
        LL f=1,x=0;char ch;
        while(ch<'0' || ch>'9'){if(ch=='-')f=-1;ch=getchar();}
        while(ch>='0' && ch<='9'){x=x*10+ch-'0';ch=getchar();}
        return f*x;
    }
    LL T,n;
    LL a[51000];
    map<int ,int >st;
    int main()
    {
        qread(T);
        while(T--)
        {
            qread(n);st.clear();bool bk=false;
            for(int i=1;i<=n;i++)
            {
                LL x;
                qread(x);
                if(st[x]==0)
                {
                    if(bk!=false)printf(" ");
                    printf("%lld",x);
                    bk=true;
                }
                st[x]=1;
            }
            printf("
    ");
        }
        return 0;
    }
  • 相关阅读:
    分布式系统之CAP理论杂记
    RPC详解
    玩转zookeeper命令
    NRPE介绍
    开启irqbalance提升服务器性能
    xinetd被动服务唤醒
    服务发现的基本原理[转]
    关于TCP/IP,必知必会的十个经典问题[转]
    Smart Client技术简要总结
    使用ng-grid实现可配置的表格
  • 原文地址:https://www.cnblogs.com/CHerish_OI/p/7899213.html
Copyright © 2011-2022 走看看