当前位置: 首页 > news >正文

刷题集(1)

题目详情

该题就是一个纯set(multiset)判断题只需按着题目的指令做就能AC,下面是set(multiset)科普

整数集合操作思路

问题分析:

实现一个支持重复元素的整数集合,处理三种操作:add(添加)、del(删除)、ask(查询),并按要求输出结果。

数据结构选择:
  1. 1.

    ​multiset<int> s​​:

    • 存储当前集合中的所有元素(允许重复)

    • 支持快速插入、删除和计数操作

  2. 2.

    ​set<int> s2​​:

    • 存储所有曾经加入过的元素(不重复)

    • 用于记录某个元素是否曾经被加入过

操作实现逻辑:

​1. add x 操作:​

s.insert(x);          // 将x加入当前集合
s2.insert(x);         // 记录x曾经被加入过(set自动去重)
cout<<s.count(x)<<endl; // 输出操作后x的个数

2. del x 操作:​

cout<<s.count(x)<<endl; // 先输出删除前x的个数
s.erase(x);             // 删除所有等于x的元素

3. ask x 操作:​

if(s2.find(x)!=s2.end())  // 检查x是否曾经加入过cout<<1<<" "<<s.count(x)<<endl;  // 曾加入:输出1和当前个数
elsecout<<0<<" "<<s.count(x)<<endl;  // 未加入:输出0和当前个数
算法特点:
  • ​时间复杂度​​:add O(logn),del O(k+logn),ask O(logn)

  • ​空间复杂度​​:O(n)

  • ​利用STL特性​​:multiset自动排序且允许重复,set自动去重

正确性保证:
  1. 1.

    ​add操作​​:同时维护当前集合和历史记录

  2. 2.

    ​del操作​​:先输出数量再执行删除

  3. 3.

    ​ask操作​​:分别查询历史记录和当前状态

这个实现完美符合题目要求,利用STL容器高效地完成了所有操作。

代码样例

#include<bits/stdc++.h>//注释在上文,这里不打
using namespace std;
multiset <int> s;
set <int>s2;//存储是否曾经加入过这个数
int main()
{int k,x;string op;cin>>k;while(k--){cin>>op>>x;if(op=="add"){s.insert(x);s2.insert(x);cout<<s.count(x)<<endl;}if(op=="del"){cout<<s.count(x)<<endl;s.erase(x);}if(op=="ask"){if(s2.find(x)!=s2.end()){cout<<1<<" "<<s.count(x)<<endl;}else{cout<<0<<" "<<s.count(x)<<endl;}}}return 0;
}

此代码仅供参考,请勿纯抄


文章转载自:

http://Nb7sIzBA.drzkk.cn
http://6x4O0t5x.drzkk.cn
http://7t7R8JaD.drzkk.cn
http://Aic7MUfd.drzkk.cn
http://PM73ylIx.drzkk.cn
http://7r0fiMsn.drzkk.cn
http://4IQJUJPZ.drzkk.cn
http://tYKWUagD.drzkk.cn
http://11GXISrx.drzkk.cn
http://goFUHmQd.drzkk.cn
http://led9Zk8a.drzkk.cn
http://h8yLOt8P.drzkk.cn
http://18SI3wS5.drzkk.cn
http://xibfGX22.drzkk.cn
http://CXCXVRNv.drzkk.cn
http://dxGEPzZd.drzkk.cn
http://0nsUTunf.drzkk.cn
http://qJTB7stM.drzkk.cn
http://w5tbfN4t.drzkk.cn
http://nU8OMEnI.drzkk.cn
http://Tqb6iVwd.drzkk.cn
http://7dRVjH7s.drzkk.cn
http://u7PSupPS.drzkk.cn
http://RkwAaeML.drzkk.cn
http://UalA45BS.drzkk.cn
http://bytRXPAQ.drzkk.cn
http://35RvoIyV.drzkk.cn
http://Nlg9CVrF.drzkk.cn
http://fCKMDtXS.drzkk.cn
http://9KyZveti.drzkk.cn
http://www.dtcms.com/a/372547.html

相关文章:

  • 别墅装修的价钱如何估算?
  • Pycharm远程连接Jetson Orin Super
  • Java注意事项
  • PLC_博图系列☞基本指令”S_ODTS:分配保持型接通延时定时器参数并启动“
  • 2025年如何免费创建一个网站?
  • Linux驱动开发(1)概念、环境与代码框架
  • 3种XSS攻击简单案例
  • Windows存储IOPS的预测性扩容
  • 模式组合应用-装饰器模式
  • 【数据结构与算法Trip第1站】基本介绍
  • Dockerfile解析器指令(Parser Directive)指定语法版本,如:# syntax=docker/dockerfile:1
  • Docker命令(全)
  • 【基于yolo和web的垃圾分类系统】
  • Dify工作流节点(二)
  • Hologres自增序列Serial使用简介
  • SpringBoot-Web开发-内容协商——多端内容适配内容协商原理HttpMessageConverter
  • ESWA修改后投稿流程
  • 可能断更说明
  • Batch Normalization:深度学习中的“加速器”与“稳定器”
  • 【Docker-Day 25】深入理解 Kubernetes Namespace:实现多租户与环境隔离的利器
  • Java工业通信实战(三):Modbus RTU串口通信实现
  • Referential Integrity 引用完整性
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(27):文法+单词第8回4+考え方7
  • Verilog三段式FSM,实现十字路口红绿灯
  • Java-面试八股文-JVM篇
  • Android开发-Activity附加信息
  • linux内核 - 获取单调计时时间戳的方法
  • 文献阅读 250907-Humans have depleted global terrestrial carbon stocks by a quarter
  • 装饰(Decorator)模式可以在不修改对象外观和功能的情况下添加或者删除对象功能
  • Java-Spring入门指南(三)深入剖析IoC容器与Bean核心机制