第一节 线性数据结构 STL

vector 容器


迭代器

vector<int> v{1, 0, 0, 8, 6};
for(vector<int>::interator it = v.begin(); it != v.end(); it ++)
  cout << *it << " ";

函数

push_back(x);  // 添加元素
pop_back();    // 删除尾元素
size();        // 查询 vector 长度
insert(it, x); // 插入元素
erase();       // 删除vector容器中的一个或一段元素
clear();       // 清空容器

总结

做题时能用数组就尽量用数组, vector 的时间复杂度比数组慢很多。

set 集合


介绍

\(set\)(集合)是 \(C++ STL\) 中的一种关联式容器, 它内部使用红黑树(一种自平衡二叉搜索树)去实现元素的有序存储。

访问

只能通过迭代器访问 例:

set<int> s{1, 0, 0, 8, 6};
for(set<int>::interator it = s.begin(); it != s.end(); it ++)
  cout << *it << " ";

但可以利用 \(C++ 11\) 继续简化

for(auto it = s.begin(); it != s.end(); it ++)
  cout << *it << " ";

for(auto it : s)
  cout << it << " ";

函数

insert(x);             // 时间复杂度 O(log_n)
find(x);               // 返回 set 中对应值的迭代器, 否则返回 end(), 时间复杂度 O(log_n)
erase(first, second);  // 删除容器中的元素
clear();               // 清空容器
lower_bound(x);        // 找到首个大于等于给定元素的迭代器, 不存在返回 end()
upper_bound(x);        // 找到首个大于给定元素的迭代器, 不存在返回 end()
size();                // 查询 set 元素个数, 时间复杂度 O(1)
empty();               // 容器是否为空
count(x);              // 查找 x 的个数, 返回 0 / 1

拓展

不去重但排序的容器 : \(multiset\)

map 容器


为什么要用 map

问 : 我要统计一堆数中一个数的个数, 用什么!!
答 : 用 桶数组!!

再问 : 我要统计一堆字符串中一个字符串的个数, 用什么!!
答 : \(map\)!!

现在懂了为什么要用 \(map\) 了吗?

特性

1. 通过键访问

map<string, int> mp;
mp["mp"] ++;
mp["10086"] ++;
mp["abc"] ++;
mp["10086"] ++;
cout << mp["10086"] << ' ' << mp["abc"];

这里程序结果输出 2 1, 可以看出 \(map\) 的键具有唯一性。

2. 通过迭代器访问

注: map 会以键的大小自动排序

map<char, int> mp;
mp['a'] ++;
mp['b'] = 10086;
mp['c'] = 114514;
for(map<char, int>::interator it = mp.begin(); it != mp.end(); it ++)
  cout << it->first << " " << it->second << endl;

这里 也可以写成 :

for(auto it = mp.begin(); it != mp.end(); it ++)
  cout << it->first << " " << it->second << endl;

for(auto it : mp)
  cout << it.first << " " << it.second << endl;

函数

insert();        // 插入元素
find(x);         // 查询元素, 不存在返回 end()
erase();         // 删除元素或区间
size();          // 查询长度
empty();         // 判断是否为空

栈和队列


介绍 (略)

优先队列

定义

prtority_queue<int, vector<int>, greator<int> > q;
prtority_queue<int, vector<int>, less<int> > q; 
等价与
prtority_queue<int> q;

尺取法

例如 : 找出序列 {2, 3, 1, 2, 4, 3} 中满足其和 \(≥ 7\) 的长度最小的连续子数组。

此题中就可用尺取法解题。

时间复杂度对比 :

暴力枚举 : O(n^2)
尺取法 : O(n)

可见 尺取法的时间复杂度是十分出色的

初赛内容 : 计算机相关知识


重要注释

CCF 中国计算机学会 : CCF 是中国计算机及相关领域的学术团体

第一台计算机1946年2月14日 在美国宾夕法尼亚大学诞生

计算机杰出人物冯 · 诺依曼 & 艾伦 · 图灵

计算机的分类 ✓

  • 按年代分类
年代 实现方式
1946 至1958 电子管
1959 至 1964 晶体管
1965 至 1970 集成电路
1971 至 N/A 超大规模集成电路
  • 按性能分类

巨型机 > 大/中型机 > 小型机 > 微型机 = 工作站

补:一般按照规模大小、性能、能耗等分类。

重要贡献人员 ★

  • 阿兰·艾伦·图灵(英):数学家,逻辑学家,计算机科学/人工智能之父,首次提出了计算机科学理论。计算机界的最高奖项“图灵奖”以他命名,被称为“计算机界的诺贝尔奖”。

  • 冯·诺依曼(美):科学家,现代计算机之父,首次提出了存储程序控制原理,称为“冯·诺依曼结构”。

  • 克劳德·香农(美):科学家,创造了信息论,提出了某种信息从一处传送到另一处所需的全部设备所构成的系统

计算机的构成 ✓

  • 要想实现计算机的基础功能,计算机必须由运算器、存储器、控制器、输入设备、输出设备构成,缺少前两者就无法正常启动计算机,即为“冯·诺依曼结构”。

  • CPU(Central Processing Unit):中央处理器,由运算器(计算)+控制器(指挥)+寄存器组成计算机的核心部件,被称为计算机的“大脑”,又称“微处理器”。

  • 内存储器:简称“内存”,用于电脑内部的存储。相对外存而言,读写速度快,但是存储空间小,并且存储在 RAM 里的数据断电后会丢失。注意与“外存(硬盘等)”区分开。

  • RAM(Random Access Memory):随机存取存储器,与CPU直接交互数据,可随时读写,断电数据全部丢失

  • ROM(Read-Only Memory):只读存储器,只能读出无法写入信息。信息一旦写入后就固定下来,断电数据不会丢失,故又称为固定存储器。

  • 外存储器:简称“外存”,用于处置长期保存的数据,一般处于电脑外部,断电后数据不会丢失。相对内存而言,外存读写速度慢,但存储容量大。主要包括硬盘、光盘、U 盘(USB闪存盘)等类型。

  • 输入设备:在计算机与人交互时,接受外部命令或者需要加工的数据。常用的输入数据包括键盘、鼠标、麦克风、摄像头等。

  • 输出设备:在计算机与人交互时,将处理结果以人类能够识别/感受的方式呈现出来的设备。常有的输出设备包括显示器、音响、打印机等。

如上图,为各个设备之间的关系,不同设备用不同颜色进行表示。

关于CPU ✓

访问速度:寄存器>高速缓存>内存>外存。

历史:出现于 \(20\) 世纪 \(70\) 年代。

断电后数据保留于 ROM 和外存。

空间换算 ★

「小」单位 「大」单位
8 bit(比特) 1 B(Byte/字节)
1024 B 1 KiB(Kilobyte)
1024 K(iB) 1 MiB(Millonbyte)
1024 M(iB) 1 GiB(Gigabyte)
1024 G(iB) 1 TiB(Terabyte)

\(iB\) 结尾的是 \(1024\) 单位一换算,\(B\) 结尾的是 \(1000\) 单位一换算(如 \(KB\),上表中没有),这就是我们买的 \(512GiB\) 硬盘有时候显示不到 \(500GiB\) 的原因。(单位不同)

网络

  • 网络的定义

网络 是信息传输、接收、共享的虚拟平台,通过它把各个点、面、体的信息联系到一起,从而实现这些资源的共享。它是人们信息交流使用的一个工具。

  • 网络的分类
  1. 局域网(LAN)。局域网是一种在小区域内使用的,由多台计算机组成的网络,覆盖范围通常局限在10 千米范围之内,属于一个单位或部门组建的小范围网。

  2. 城域网(MAN)。城域网是作用范围在广域网与局域网之间的网络,其网络覆盖范围通常可以延伸到整个城市,借助通信光纤将多个局域网联通公用城市网络形成大型网络,使得不仅局域网内的资源可以共享,局域网之间的资源也可以共享。

  3. 广域网(WAN)。广城网是一种远程网,涉及长距离的通信,覆盖范围可以是个国家或多个国家,甚至整个世界。由于广域网地理上的距离可以超过几千千米,所以信息衰减非常严重,这种网络一般要租用专线,通过接口信息处理协议和线路连接起来,构成网状结构,解决寻径问题。

  • 网络体系结构

网络通常按层或级的方式来组织,每一层都建立在它的下层之上。 不同的网络,层的名字、数量、内容和功能都不尽相同。 但是每一层的目的都是向它的上一层提供服务,这一点是相同的。 层和协议的集合被称为网络体系结构。如 :\(TCP\)

  • OSI 模型示意图

IP 地址分类

错题整理

  1. 设当价格不变时,集成电路上可容纳的元器件的数目,约每隔18~24个月便会增加一倍,性能也将提升一倍。提出该规律的是( )
    A. 图灵
    B. 诺贝尔
    C. 摩尔
    D. 冯-诺伊曼

题解 : 这个规律通常被称为摩尔定律,它由英特尔公司的联合创始人之一戈登·摩尔(Gordon Moore)在1965年提出。根据摩尔定律,集成电路上可容纳的元器件数目每隔约18到24个月就会增加一倍,同时性能也会提升一倍。这一规律在半导体产业的发展中起到了重要的指导作用。

  1. 1956年( )授予肖克利(William Shockley)、巴丁(John Bardeen)和布拉顿(Walter Brattain)
    A. 诺贝尔物理学奖
    B. 约翰·冯·诺依曼奖
    C. 图灵奖
    D. 高德纳奖 (Donald E. Knuth Prize)
  1. 为解决 web 应用中的不兼容问题,保障信息的顺利流通,( )制定了一系列标准,涉及 HTML、XML、CSS 等,并建议开发者遵循。
    A. 微软
    B. 美国计算机协会(ACM)
    C. 联合国教科文组织
    D. 万维网联盟(W3C)

题解 : 为解决 web 应用中的不兼容问题,保障信息的顺利流通,D. 万维网联盟(W3C)制定了一系列标准,涉及 HTML、XML、CSS 等,并建议开发者遵循。

万维网联盟(World Wide Web Consortium,简称 W3C)是一个国际组织,致力于推动互联网的发展和标准化。W3C 的使命是制定开放的 Web 标准,以确保 Web 的长期发展,并促进 Web 技术的互操作性。W3C 制定的标准包括 HTML、XML、CSS 等,这些标准的使用可以提高 Web 应用的兼容性和互操作性,使信息在不同的平台和设备之间顺利流通。开发者可以参考和遵循 W3C 的标准来开发符合 Web 标准的应用程序。

  1. 以下竞赛活动中历史最悠久的是( )。
    A. 全国青少年信息学奥林匹克联赛(NOIP)
    B. 全国青少年信息学奥林匹克竞赛(NOI)
    C. 国际信息学奥林匹克竞赛(IOI)
    D. 亚太地区信息学奥林匹克竞赛(APIO)
  1. 现在的计算机通常是将处理程序放在连续的内存地址中。CPU在执行这个处理程序时,是使用一个叫( )的寄存器来指示程序的执行顺序。
    A. 累加寄存器
    B. 指令寄存器
    C. 内存地址寄存器
    D. 指令地址寄存器

题解 : 在现代计算机中,用于指示程序执行顺序的寄存器是 D. 指令地址寄存器(Instruction Address Register,简称 IAR)。

指令地址寄存器(IAR)是CPU中的一个寄存器,它用于存储下一条将要执行的指令的地址。CPU从内存中读取指令时,会根据指令地址寄存器中存储的地址来获取下一条指令的位置,并将其加载到指令寄存器中执行。指令地址寄存器的更新由指令执行控制部件负责,以确保按正确的顺序执行程序中的指令。

因此,正确答案是 D. 指令地址寄存器

  1. Pv4 协议使用 32 位地址,随着其不断被分配,地址资源日趋枯竭。因此,它正逐渐被 使用( )位地址的 IPv6 协议所取代
    A. 40
    B. 48
    C. 64
    D. 128
  1. 下列说法中,正确的是
    A. 数据总线决定了中央处理器CPU所能访问的最大内存空间的大小
    B. 中央处理器CPU内部有寄存器组,用来储存数据
    C. 不同厂家生产的CPU所能处理的指令集是相同的
    D. 数据传输过程中可能会出错,奇偶校验法可以检测出数据中那一为在传输中出了差错

题解 : 正确的说法是选项 B. 中央处理器CPU内部有寄存器组,用来储存数据。

中央处理器(CPU)内部包含了一组寄存器,用于存储和处理数据。寄存器是位于CPU内部的高速存储器,用于临时存储指令和数据,以供处理器执行操作。寄存器具有很快的读写速度,可直接与CPU进行通信。

选项 A. 数据总线决定了CPU访问内存空间的大小是不准确的。数据总线是计算机系统中用于传输数据的通道,其宽度决定了每次传输的数据位数,而与CPU访问的最大内存空间大小无直接关系。

选项 C. 不同厂家生产的CPU所能处理的指令集是不同的。不同的CPU架构和制造商使用不同的指令集架构,例如x86、ARM等,因此不同的CPU所能处理的指令集是不同的。

选项 D. 奇偶校验法用于检测数据传输过程中的错误。奇偶校验法是一种简单的差错检测方法,通过在传输的数据中添加一个奇偶位来检测数据中的错误。然而,奇偶校验法只能检测出奇数个位错误,对于偶数个位错误无法检测出来

  1. Internet实现了分布在世界各地的各类网络的互联,其最基础和核心的协议是
    A. HTTP
    B. HTML
    C. TCP/IP
    D. FTP
posted @ 2023-07-10 19:46  So_noSlack  阅读(101)  评论(0)    收藏  举报