第一节 线性数据结构 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\) 的原因。(单位不同)
网络
- 网络的定义
网络 是信息传输、接收、共享的虚拟平台,通过它把各个点、面、体的信息联系到一起,从而实现这些资源的共享。它是人们信息交流使用的一个工具。
- 网络的分类
-
局域网(LAN)。局域网是一种在小区域内使用的,由多台计算机组成的网络,覆盖范围通常局限在10 千米范围之内,属于一个单位或部门组建的小范围网。
-
城域网(MAN)。城域网是作用范围在广域网与局域网之间的网络,其网络覆盖范围通常可以延伸到整个城市,借助通信光纤将多个局域网联通公用城市网络形成大型网络,使得不仅局域网内的资源可以共享,局域网之间的资源也可以共享。
-
广域网(WAN)。广城网是一种远程网,涉及长距离的通信,覆盖范围可以是个国家或多个国家,甚至整个世界。由于广域网地理上的距离可以超过几千千米,所以信息衰减非常严重,这种网络一般要租用专线,通过接口信息处理协议和线路连接起来,构成网状结构,解决寻径问题。
- 网络体系结构
网络通常按层或级的方式来组织,每一层都建立在它的下层之上。 不同的网络,层的名字、数量、内容和功能都不尽相同。 但是每一层的目的都是向它的上一层提供服务,这一点是相同的。 层和协议的集合被称为网络体系结构。如 :\(TCP\)
- OSI 模型示意图
IP 地址分类
错题整理
- 设当价格不变时,集成电路上可容纳的元器件的数目,约每隔18~24个月便会增加一倍,性能也将提升一倍。提出该规律的是( )
A. 图灵
B. 诺贝尔
C. 摩尔
D. 冯-诺伊曼
题解 : 这个规律通常被称为摩尔定律,它由英特尔公司的联合创始人之一戈登·摩尔(Gordon Moore)在1965年提出。根据摩尔定律,集成电路上可容纳的元器件数目每隔约18到24个月就会增加一倍,同时性能也会提升一倍。这一规律在半导体产业的发展中起到了重要的指导作用。
- 1956年( )授予肖克利(William Shockley)、巴丁(John Bardeen)和布拉顿(Walter Brattain)
A. 诺贝尔物理学奖
B. 约翰·冯·诺依曼奖
C. 图灵奖
D. 高德纳奖 (Donald E. Knuth Prize)
- 为解决 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 标准的应用程序。
- 以下竞赛活动中历史最悠久的是( )。
A. 全国青少年信息学奥林匹克联赛(NOIP)
B. 全国青少年信息学奥林匹克竞赛(NOI)
C. 国际信息学奥林匹克竞赛(IOI)
D. 亚太地区信息学奥林匹克竞赛(APIO)
- 现在的计算机通常是将处理程序放在连续的内存地址中。CPU在执行这个处理程序时,是使用一个叫( )的寄存器来指示程序的执行顺序。
A. 累加寄存器
B. 指令寄存器
C. 内存地址寄存器
D. 指令地址寄存器
题解 : 在现代计算机中,用于指示程序执行顺序的寄存器是 D. 指令地址寄存器(Instruction Address Register,简称 IAR)。
指令地址寄存器(IAR)是CPU中的一个寄存器,它用于存储下一条将要执行的指令的地址。CPU从内存中读取指令时,会根据指令地址寄存器中存储的地址来获取下一条指令的位置,并将其加载到指令寄存器中执行。指令地址寄存器的更新由指令执行控制部件负责,以确保按正确的顺序执行程序中的指令。
因此,正确答案是 D. 指令地址寄存器
- Pv4 协议使用 32 位地址,随着其不断被分配,地址资源日趋枯竭。因此,它正逐渐被 使用( )位地址的 IPv6 协议所取代
A. 40
B. 48
C. 64
D. 128
- 下列说法中,正确的是
A. 数据总线决定了中央处理器CPU所能访问的最大内存空间的大小
B. 中央处理器CPU内部有寄存器组,用来储存数据
C. 不同厂家生产的CPU所能处理的指令集是相同的
D. 数据传输过程中可能会出错,奇偶校验法可以检测出数据中那一为在传输中出了差错
题解 : 正确的说法是选项 B. 中央处理器CPU内部有寄存器组,用来储存数据。
中央处理器(CPU)内部包含了一组寄存器,用于存储和处理数据。寄存器是位于CPU内部的高速存储器,用于临时存储指令和数据,以供处理器执行操作。寄存器具有很快的读写速度,可直接与CPU进行通信。
选项 A. 数据总线决定了CPU访问内存空间的大小是不准确的。数据总线是计算机系统中用于传输数据的通道,其宽度决定了每次传输的数据位数,而与CPU访问的最大内存空间大小无直接关系。
选项 C. 不同厂家生产的CPU所能处理的指令集是不同的。不同的CPU架构和制造商使用不同的指令集架构,例如x86、ARM等,因此不同的CPU所能处理的指令集是不同的。
选项 D. 奇偶校验法用于检测数据传输过程中的错误。奇偶校验法是一种简单的差错检测方法,通过在传输的数据中添加一个奇偶位来检测数据中的错误。然而,奇偶校验法只能检测出奇数个位错误,对于偶数个位错误无法检测出来
- Internet实现了分布在世界各地的各类网络的互联,其最基础和核心的协议是
A. HTTP
B. HTML
C. TCP/IP
D. FTP
本文来自博客园,作者:So_noSlack,转载请注明原文链接:https://www.cnblogs.com/So-noSlack/p/17541065.html