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

    题解:掌握了 模板函数 count()和insert()的话, 这个题就好做多了---所以讲道理这是个低级算法题

    #include<iostream>
    #include<cstdio>
    #include<string>
    #include<set>
    using namespace std;
    
    #define maxn 50000
    int a[maxn];
    set<int>s;
    
    int main(){
        int T;
        cin >> T;
        while(T--){
            int N, m = 0;
            cin >> N;
            s.clear();
            
            for(int i=0; i<N; i++){
                scanf("%d", &a[i]);
                if(s.count(a[i]) == 0){
                    if(i == 0) printf("%d", a[i]);
                    else printf(" %d", a[i]);
                }
                s.insert(a[i]);
            }
            printf("
    ");
        }    
    }
  • 相关阅读:
    Nginx配置文件nginx.conf中文详解(转)
    windows Nginx基本使用方法
    phpstorm 找到文件修改历史
    微信小程序模拟点击出现问题解决方法
    设置头像、商品、轮播图为背景图时需要的css
    div左右居中css
    自定义方形复选框
    css 调转180度:transform: rotate(180deg);
    js字符串转数字(小数),数字转字符串
    腾讯地图key秘钥
  • 原文地址:https://www.cnblogs.com/ledoc/p/6201323.html
Copyright © 2011-2022 走看看