[JLOI2011]不重复数字

2761: [JLOI2011]不重复数字

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 2459  Solved: 939
[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来进行输入输出操作,以免浪费不必要的时间。

Source

                  [Submit][Status][Discuss]

  本来是个哈希树,但是可以用STL中的set来作,具体set有讲解:

  http://blog.csdn.net/lyhvoyage/article/details/22989659

  今天第一次见识了PE,PE与AC的区别是格式的问题,如多了一个空格什么的。。。。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 set<int>S;
 4 int T,n,x,a[50001],b[50001],end;
 5 int main()
 6 {
 7     scanf("%d",&T);
 8     for(;T;T--) {
 9         scanf("%d",&n);
10         S.clear(); end=0;
11         for(int i=1;i<=n;i++)
12             scanf("%d",&a[i]);
13         for(int i=1;i<=n;i++)
14             if(S.find(a[i])==S.end()){//不存在该元素
15                 S.insert(a[i]);
16                 b[++end]=a[i];
17             }
18         for(int i=1;i<end;i++)
19             printf("%d",b[i]),cout<<" ";
20         cout<<b[end]<<endl;
21     }
22     return 0;
23 }
时间: 2024-10-21 16:30:52

[JLOI2011]不重复数字的相关文章

2761: [JLOI2011]不重复数字

2761: [JLOI2011]不重复数字 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1770  Solved: 675[Submit][Status] 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组数据. 接下来每组数据包括两行,

BZOJ 2761: [JLOI2011]不重复数字 水题

2761: [JLOI2011]不重复数字 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 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

2761: [JLOI2011]不重复数字(平衡树)

2761: [JLOI2011]不重复数字 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2133  Solved: 825[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组数据. 接下来

题解 P4305 【[JLOI2011]不重复数字】

来一波用vector的最短代码题解 P4305 [JLOI2011]不重复数字 关于hash表的部分大家可以看一看其他的题解,我就不说了 不定长数组vector的几个基本用法: 定义: vector<数据类型> 数组名称 访问: a[pos]//访问a数组下标为pos的元素 尾部加入元素: a.push_back(x) 判断是否为空: a.empty()//空返回true,非空返回false 代码: #include <iostream> #include <cstdio&g

[BZOJ2761][JLOI2011]不重复数字

试题描述 给出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

BZOJ 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

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

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

B2761 [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 对于每组数据,输出一行,为去重后剩下的数字

BZOJ 2761: [JLOI2011]不重复数字 hash哈希

题目就不贴了 点我看题 题意:这题题意很简明,就是给一个序列,把序列里相同的删掉,然后输出,按原数列顺序. 思路:这题之前QZZ和ZN大神犇叫我去做,辣时还不会hash,就留着了.最近某夏令营学会了hash就回来写. 就是很简单的hash裸题. 我的hash就是把数字的每一位加起来然后累乘再膜. 从夏令营中涨了姿势,hash可以选择不判重,然后直接通过多hash的方法减少碰撞概率. QAQ...刚开始以为3hash就够了,最后5hash才水过去.QAQ注意输出格式,行末没空格. 1 const