csp信奥赛C++标准模板库STL案例应用5

csp信奥赛C++标准模板库STL案例应用5

set实践

题目描述

明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 N N N 个 1 1 1 到 1000 1000 1000 之间的随机整数 ( N ≤ 100 ) (N\leq100) (N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成"去重"与"排序"的工作。

输入格式

输入有两行,第 1 1 1 行为 1 1 1 个正整数,表示所生成的随机数的个数 N N N。

第 2 2 2 行有 N N N 个用空格隔开的正整数,为所产生的随机数。

输出格式

输出也是两行,第 1 1 1 行为 1 1 1 个正整数 M M M,表示不相同的随机数的个数。

第 2 2 2 行为 M M M 个用空格隔开的正整数,为从小到大排好序的不相同的随机数。

输入输出样例 1
输入 1
复制代码
10
20 40 32 67 40 20 89 300 400 15
输出 1
复制代码
8
15 20 32 40 67 89 300 400

题目分析

问题核心:对给定的一串数字进行去重和排序操作

输入处理

  • 第一行:数字个数 N (≤100)
  • 第二行:N个1-1000之间的整数

输出要求

  1. 第一行:去重后的数字个数 M
  2. 第二行:按升序排列的去重结果

关键点

  • 数据范围小(N≤100,数值≤1000)
  • 需要同时完成去重和排序

代码实现

cpp 复制代码
#include <bits/stdc++.h>  // 包含所有标准库头文件(竞赛常用写法)
using namespace std;      // 使用标准命名空间

int n;                    // 存储随机数的个数
set<int> s;               // 使用set容器,自动去重并排序

int main(){
    // 输入随机数个数
    cin >> n;
    
    // 循环读取n个随机数并插入set
    for(int i = 1; i <= n; i++){
        int x;           // 临时存储每个随机数
        cin >> x;        // 读取一个随机数
        s.insert(x);     // 插入set(自动去重和排序)
    }
    
    // 输出去重后的数字个数(set的大小)
    cout << s.size() << endl;
    
    // 遍历set并输出所有元素
    for(auto it = s.begin(); it != s.end(); it++){
        cout << *it << " ";  // 输出当前元素和空格
    }
    
    return 0;  // 程序正常结束
}

功能分析

核心功能实现
  1. 去重功能 :通过set<int>自动去除重复元素
  2. 排序功能set内部使用红黑树实现,元素自动按升序排列
算法特点
  • 时间复杂度 :O(N log N)
    • 每个插入操作 O(log N)
    • N次插入共 O(N log N)
  • 空间复杂度:O(M),M为去重后的元素个数
代码优势
  1. 简洁高效:利用STL容器简化代码
  2. 逻辑清晰:去重和排序由容器自动完成
  3. 输出正确:格式完全符合题目要求
其他实现方案对比
  1. 排序+去重:先排序,再用unique算法去重
  2. 桶排序:利用数值范围小的特点(1-1000)
  3. 哈希集合:使用unordered_set,再单独排序
适用场景
  • 本题数据规模小,多种方法均可
  • set方案代码最简洁,最适合竞赛快速解题
  • 如果数据规模更大(如N>10^5),需要考虑更高效的算法

各种学习资料,助力大家一站式学习和提升!!!

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int main(){
	cout<<"##########  一站式掌握信奥赛知识!  ##########";
	cout<<"#############  冲刺信奥赛拿奖!  #############";
	cout<<"######  课程购买后永久学习,不受限制!   ######";
	return 0;
}
  • 一、CSP信奥赛C++通关学习视频课:
    • C++语法基础
    • C++语法进阶
    • C++算法
    • C++数据结构
    • CSP信奥赛数学
    • CSP信奥赛STL
  • 二、CSP信奥赛C++竞赛拿奖视频课:
    • 信奥赛csp-j初赛高频考点解析
    • CSP信奥赛C++复赛集训课(12大高频考点专题集训)
  • 三、考级、竞赛刷题题单及题解:
    • GESP C++考级真题题解
    • CSP信奥赛C++初赛及复赛高频考点真题解析
    • CSP信奥赛C++一等奖通关刷题题单及题解

详细内容:

1、csp/信奥赛C++,完整信奥赛系列课程(永久学习):

https://edu.csdn.net/lecturer/7901 点击跳转


2、CSP信奥赛C++竞赛拿奖视频课:

https://edu.csdn.net/course/detail/40437 点击跳转

3、csp信奥赛冲刺一等奖有效刷题题解:

CSP信奥赛C++初赛及复赛高频考点真题解析(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

  • 2025 csp-j 复赛真题及答案解析(最新更新)
  • 2025 csp-x(山东) 复赛真题及答案解析(最新更新)
  • 2025 csp-x(河南) 复赛真题及答案解析(最新更新)
  • 2025 csp-x(辽宁) 复赛真题及答案解析(最新更新)
  • 2025 csp-x(江西) 复赛真题及答案解析(最新更新)
  • 2025 csp-x(广西) 复赛真题及答案解析(最新更新)
  • 2020 ~ 2024 csp 复赛真题题单及题解
  • 2019 ~ 2022 csp-j 初赛高频考点真题分类解析
  • 2021 ~ 2024 csp-s 初赛高频考点解析
  • 2023 ~ 2024 csp-x (山东)初赛真题及答案解析
  • 2024 csp-j 初赛真题及答案解析
  • 2025 csp-j 初赛真题及答案解析(最新更新)
  • 2025 csp-s 初赛真题及答案解析(最新更新)
  • 2025 csp-x (山东)初赛真题及答案解析(最新更新)
  • 2025 csp-x (江西)初赛真题及答案解析(最新更新)
  • 2025 csp-x (辽宁)初赛真题及答案解析(最新更新)

CSP信奥赛C++一等奖通关刷题题单及题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转

  • 129 道刷题练习和详细题解,涉及:模拟算法、数学思维、二分算法、 前缀和、差分、深搜、广搜、DP专题、 树和图

4、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转

· 文末祝福 ·

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int main(){
	cout<<"跟着王老师一起学习信奥赛C++";
	cout<<"    成就更好的自己!       ";
	cout<<"  csp信奥赛一等奖属于你!   ";
	return 0;
}
相关推荐
HellowAmy44 分钟前
我的C++规范 - 玩一个小游戏
开发语言·c++·代码规范
自学不成才1 小时前
深度复盘:一次flutter应用基于内存取证的黑盒加密破解实录并完善算法推理助手
c++·python·算法·数据挖掘
玖釉-3 小时前
[Vulkan 学习之路] 08 - 给图片穿马甲:图像视图 (Image Views)
c++·windows·图形渲染
m0_748250033 小时前
C++ 信号处理
c++·算法·信号处理
yuyanjingtao4 小时前
动态规划 背包 之 凑钱
c++·算法·青少年编程·动态规划·gesp·csp-j/s
scx201310045 小时前
20260112树状数组总结
数据结构·c++·算法·树状数组
星竹晨L5 小时前
【C++内存安全管理】智能指针的使用和原理
开发语言·c++
智者知已应修善业5 小时前
【C语言 dfs算法 十四届蓝桥杯 D飞机降落问题】2024-4-12
c语言·c++·经验分享·笔记·算法·蓝桥杯·深度优先
玖釉-5 小时前
[Vulkan 学习之路] 09 - 显卡的流水线工厂:图形管线概览 (Graphics Pipeline)
c++·windows·图形渲染
无限进步_6 小时前
【C语言&数据结构】二叉树遍历:从前序构建到中序输出
c语言·开发语言·数据结构·c++·算法·github·visual studio