zoukankan      html  css  js  c++  java
  • BZOJ 2761: [JLOI2011]不重复数字 水题

    2761: [JLOI2011]不重复数字

    Time Limit: 10 Sec  Memory Limit: 162 MB
    Submit: 2100  Solved: 809

    题目连接

    http://www.lydsy.com/JudgeOnline/problem.php?id=2761

    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++的同学请使用scanfprintf来进行输入输出操作,以免浪费不必要的时间。

    题解:

    哇,难得一见的傻逼省选题= =

    代码:

    //qscqesze
    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <ctime>
    #include <iostream>
    #include <algorithm>
    #include <set>
    #include <vector>
    #include <sstream>
    #include <queue>
    #include <typeinfo>
    #include <fstream>
    #include <map>
    typedef long long ll;
    using namespace std;
    //freopen("D.in","r",stdin);
    //freopen("D.out","w",stdout);
    #define sspeed ios_base::sync_with_stdio(0);cin.tie(0)
    #define maxn 200001
    #define mod 10007
    #define eps 1e-9
    const int inf=0x7fffffff;   //无限大
    /*
    
    */
    //**************************************************************************************
    inline ll read()
    {
        int x=0,f=1;char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
        return x*f;
    }
    set<int> s;
    int main()
    {
        int t=read();
        while(t--)
        {
            int x;
            s.clear();
            int n=read();
            for(int i=0;i<n;i++)
            {
                x=read();
                if(s.count(x)==0)
                {
                    if(i==0)
                        printf("%d",x);
                    else
                        printf(" %d",x);
                }
                s.insert(x);
            }
            printf("
    ");
        }
    }
  • 相关阅读:
    2. Add Two Numbers
    1. Two Sum
    leetcode 213. 打家劫舍 II JAVA
    leetcode 48. 旋转图像 java
    leetcode 45. 跳跃游戏 II JAVA
    leetcode 42. 接雨水 JAVA
    40. 组合总和 II leetcode JAVA
    24. 两两交换链表中的节点 leetcode
    1002. 查找常用字符 leecode
    leetcode 23. 合并K个排序链表 JAVA
  • 原文地址:https://www.cnblogs.com/qscqesze/p/4364301.html
Copyright © 2011-2022 走看看