BZOJ 2761: [JLOI2011]不重复数字(傻逼题)

原创 2015年11月21日 16:52:44

2761: [JLOI2011]不重复数字

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 2885  Solved: 1064
[Submit][Status][Discuss]

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


解题思路:

map

/**************************************************************
    Problem: 2761
    User: mogu
    Language: C++
    Result: Accepted
    Time:920 ms
    Memory:1672 kb
****************************************************************/
 
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <algorithm>
#include <map>
#include <vector>
#define ll long long 
using namespace std;
const int MAXN = 50000 + 10;
int 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;
}
map<int, int> st;
int N, x;
int main()
{
    int T = read();
    while(T--)
    {
        N = read();st.clear();bool flag = true;
        for(int i=0;i<N;i++)
        {
            x = read();
            if(st[x] == 0)
            {
                if(!flag) printf(" ");
                printf("%d", x);
                flag = false;
            }
            st[x] = 1;
        }
        printf("\n");
    }
    return 0;
}


相关文章推荐

BZOJ 大视野 2761: [JLOI2011]不重复数字 解题报告

我的方法860ms 对原序列离散化, DY[i] 代表离散化的值i对应的原数 for 一遍原序列,二分找它的离散化值,这是就可以用bool数组了 注意有负数 #include #inclu...

BZOJ-2761-不重复数字

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

[BZOJ2761][JLOI2011]不重复数字(splay)

题目描述传送门题解练习平衡树代码#include #include #include using namespace std; #define N 50005int T,n,x,root,sz; bo...

ZCMU—1779

1779: 无法言表 Time Limit: 1 Sec  Memory Limit: 128 MB [Submit][Status][Web Board] Description 给出N个数,要...
  • jnxxhzz
  • jnxxhzz
  • 2016年12月19日 10:09
  • 173

BZOJ2761 不重复数字

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

BZOJ [JLOI2011]不重复数字

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

bzoj2761 [JLOI2011]不重复数字

2761: [JLOI2011]不重复数字 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 3081  Solved: 1138 [Submit...
  • z8110
  • z8110
  • 2015年12月27日 16:38
  • 330

无法言表<SET集合的使用>

Problem D: 无法言表 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 210  Solved: 82 [Submit][Status][We...

【BZOJ2761】[JLOI2011]不重复数字 STL set

为什么我没有赶上那时的JLOI,那时
  • eolv99
  • eolv99
  • 2014年10月04日 16:42
  • 754

bzoj 1008 越狱

监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种。如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 1 水题 一共有m ^...
  • aziint
  • aziint
  • 2017年09月18日 15:05
  • 46
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:BZOJ 2761: [JLOI2011]不重复数字(傻逼题)
举报原因:
原因补充:

(最多只允许输入30个字)