CSP初赛知识


为以后参加csp的选手做准备
注:此文中的 标记文本为重点


第一天

第一台计算机

时间:1946年2月
地点:美国宾夕法尼亚大学
名称:ENIAC
细节:占地170平方米,重30吨,18000个电子管,耗电150千瓦,保存80个字节,每秒54次加、减运算,价值48万美元。

计算机的四个时代

  • 电子管计算机时代(1946~1957)
  • 晶体管计算机时代(1957~1964)
  • 集成电路计算机时代(1957~1971)
  • 超大规模集成电路时代(1971~现在)

计算机的组成

五大部件组成,也成五大子系统,每一个子系统都有自己相应的功能。
下图可以清晰表现五大子系统的关系:

控制线
控制线
控制线
数据
数据线
数据线
数据
数据线
反馈线
反馈线
反馈线
02控制器
04输入设备
05输出设备
01运算器
03存储器

五大子系统 { 01. 运算器:算数、逻辑运算,将运算的中间结果暂存 02. 控制器:控制,指挥输入、运行、处理结果 } C P U ( 算数逻辑单元 )    03. 存储器:存放数据和程序    04. 输入设备:人们 → 信息 转化 机器 ( 键盘、鼠标 )    05. 输出设备:机器 → 信息 转化 人们 ( 显示屏、打印机 ) 五大子系统 \left\{ \begin{array}{ll} \left. \begin{array}{ll} 01.运算器:算数、逻辑运算,将运算的中间结果暂存 \\ 02.控制器:控制,指挥输入、运行、处理结果 \end{array}\right\}CPU(算数逻辑单元) \\ \ \ 03.存储器:存放数据和程序 \\ \\ \ \ 04.输入设备:人们\xrightarrow[_{_{_{_{信息}}}}]{转化}机器 (键盘、鼠标)\\ \\ \ \ 05.输出设备:机器\xrightarrow[_{_{_{_{信息}}}}]{转化}人们 (显示屏、打印机 ) \end{array} \right. 五大子系统 01.运算器:算数、逻辑运算,将运算的中间结果暂存02.控制器:控制,指挥输入、运行、处理结果}CPU(算数逻辑单元)  03.存储器:存放数据和程序  04.输入设备:人们转化 信息机器(键盘、鼠标)  05.输出设备:机器转化 信息人们(显示屏、打印机)

内存与外存

  • 内存:
    • 随机存储器(RAM)(主存):存操作系统、正在运行的程序。
    • 读写存储器:读取时间与位置无关,可以随时读入、读出。没电信息会丢失(电保存)。
    • 只读存储器(ROM):不能修改,配置基本的输入、输出程序。有没有电都一样。
    • 高速缓存存储器(Cache):CPU和内存之间的高速小容量存储器。跟RAM一样,没电信息会丢失。
CPU
Cache
主存
外存
  • 外存:放暂时不用的程序和数据,内外交换信息。用磁性介质或光盘,例如硬盘、软盘、磁带、CD等。能长期保存信息,不依赖于电保存信息,但速度比CPU慢很多。

计算机的构成

计算机系统 { 硬件部分 { 主机 { 中央处理器 { 运算器 控制器 内存储器 { 随机存储器 只读存储器 外部设备 { 输入设备 输出设备 外存储器 软件部分 { 系统软件 < < 操作系统(中间件,承硬件启应用) 应用软件 计算机系统 \left \{\begin{array}{ll} 硬件部分\left \{ \begin{array}{ll} 主机\left \{ \begin{array}{ll} 中央处理器\left \{ \begin{array}{ll} 运算器\\ 控制器 \end{array}\right.\\ 内存储器\left \{ \begin{array}{ll} 随机存储器\\ 只读存储器 \end{array}\right. \end{array}\right.\\ 外部设备\left \{ \begin{array}{ll} 输入设备\\ 输出设备\\ 外存储器 \end{array}\right. \end{array}\right.\\ 软件部分\left \{ \begin{array}{ll} 系统软件 <<操作系统(中间件,承硬件启应用)\\ 应用软件 \end{array}\right. \end{array}\right. 计算机系统 硬件部分 主机 中央处理器{运算器控制器内存储器{随机存储器只读存储器外部设备 输入设备输出设备外存储器软件部分{系统软件<<操作系统(中间件,承硬件启应用)应用软件

  • 操作系统:ioerating system,OS
    • 电脑端:windows,macOS,Linux等
    • 手机端:iOS,Android,HarmonyOS等

CPU寻址

CPU最大能查询多大范围的地址叫做寻址能力,CPU的寻址能力以字节为单位。例如32位的CPU的可以寻址 2 31 字节 = 4 G 2^{31}字节=4G 231字节=4G大小的地址。(CPU挨家挨户地找叫做寻址,超出寻址范围,CPU就找不到数据了)

著名人士

  1. 冯·诺依曼:“现代计算机之父”,冯·诺依曼架构
  2. 阿兰·图灵:英国人,“计算机科学之父”、“人工智能之父”。发明图灵机,在二战中为破译德军的密码发挥了重要作用。图灵奖是美国计算机协会于1966年设立的,一般只发给一名计算机科学家。
  3. 姚期智:中国人,2000年图灵奖获得者。
  4. 戈登·摩尔:摩尔定律(当价格不变,集成电路上的元器件数目月每隔18~24个月增加一倍,性能提升一倍)
  5. 查尔斯·巴比奇:提出了差分机与分析机的设计概念,被视为计算机先驱,被称为现代计算机的鼻祖

网络

  • IP地址:是IP协议提供的一种统一的地址格式。
    • IPv4只有4字节,共32位,在2019年11月25日已经分配完毕;
    • IPv6采用128位地址长度,几乎用不完。
  • 根据地理位置,网络可分为:
    1. 局域网(LAN): < 10 k m <10km <10km,一般是有线网络,是组成MAN和WAN的基础。
    2. 城域网(MAN): 10 10 10~ 100 k m 100km 100km,一般都加入了广域网
    3. 广域网(WAN):跨国、洲,全球性的网络。 典型案例是Inerenet网。
    4. 个人网(WPAN): 10 m 左右 10m左右 10m左右,无限个人局域网
  • 域名:IP地址标记网上唯一的计算机,但是IP地址太长,不好记,于是又发明了另一套字符型的地址方案,及域名地址。IP地址和域名是一一对应的。
后缀描述
.comcompany,表示公司企业
.cn中国的国家顶级域名
.edu教育机构
.gov政府部门
.net网络组织,现在任何人都可以注册
.org非营利组织,任何人都可以注册

第二天

其他基本知识简介

  • 1984年创办NOI(全国青少年计算机程序设计竞赛)
  • 全球两大个人电脑处理器厂商:Intel和AMD
    • 赛扬(低端)、奔驰(中端)、酷睿(高端,i5、i7是主流)是CPU型号(Intel的)
  • 一些协议
    • FTP文件传输协议
    • SMTP简单邮件传输协议
    • HTTP超文本传输协议
    • POP邮局协议

简单数据结构

  • 栈(stack):先进后出表(FILO表),入栈:放元素,出栈:取元素。
  • 队列(queue):线性表,先进先出表(FIFO表)
出队 a 1 a_1 a1 a 2 a_2 a2 a 3 a_3 a3 a 4 a_4 a4 a 5 a_5 a5入队
队首队尾
  • 链表(list):
    • 链式存储结构,随机存储
    • 特点:
      1. 存储灵活,不需要连续的空间
      2. 自适应内存大小,不需要提前开辟空间
DATA1 NEXT
DATA2 NEXT
DATA3NEXT
NULL
区别链表数组
存储方式储存地址不连续储存地址连续
遍历速度稍慢速度快
插入、删除较为方便不方便

进制

  • 10进制转n进制:除以n取余,逆序排列(短除法)
  • n进制转10进制:从末位一次乘n的0、1、2…次方,再相加(位值原理)
  • 8为二进制最大的数是255

计算机的存储

  • 存储单位:
    • 位(bit):1个二进制位,计算机存储的最小单位
    • 字节(byte,B):8bit=1byte,计算机存储的基本单位
    • 1KB=1024B,1MB=1024KB,1GB=1024MB,1TB=1024GB
  • 各种数据类型的存储长度
类型字节数位数
char18
bool18
short int216
int432
float432
double864
long4或832或64(电脑位数不同各不一样)
long long864

位运算

位运算符号描述运算规则
&两个位都是1,结果才是1
|两个位都是0,结果才是0
^异或两个位同0异1
~取反0变1,1变0
<<左移各二进制位全部左移若干位,高位丢弃,低位补0(对于有符号数,最高位不变)
>>右移各二进制位全部右移若干位,对于无符号数,高位补0(对于有符号数,太复杂不需掌握)
  • 运算优先级
    • ~ 最高
    • ^ 第二
    • | 和 & 第三
  • 考题中也会这样写:
    • 并且 ∧ \wedge (先算)
    • 或者 ∨ \vee (再算)
    • 取反 ¬ \neg ¬(最后算)

表达式

  1. 中缀表达式就是常见的运算表达式。例:(5-2)*4+1
  2. 前缀表达式又称波兰式,前缀表的式的运算符位于操作数之前从右到左扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符是,弹出栈顶的两个数用运算符(从顶到底)对它们做相应的计算。与例子中缀表达式对应的前缀表达式:+ 1 * 4 - 2 5
  3. 后缀表达式又称逆波兰式,与前缀表达式相似,后缀表的式的运算符位于操作数之后,但要从左到右扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符是,弹出栈顶的两个数用运算符(从顶到底)对它们做相应的计算。与例子中缀表达式对应的后缀表达式:5 2 - 4 * 1 +

第三天

算法初解

排序算法

  • 桶排序(计数排序):非基于比较的排序方法,时间复杂度 O ( n + k ) O(n+k) O(n+k),快于任何基于比较的排序算法,但是它牺牲空间换时间
  • 更多排序算法:冒泡排序、插入排序、选择排序、快速排序、基数排序、归并排序等

算法时间复杂度

  • 时间复杂度用来度量一个算法的运行时间,一般用大写字母O表示
    • 算法运行的次数可以用常数表示,该算法的时间复杂度就是 O ( 1 ) O(1) O(1)
    • 循环 n n n次, O ( n ) O(n) O(n)
    • 循环 n 2 n^2 n2, O ( n 2 ) O(n^2) O(n2)
    • 特别的,循环 n 2 + n n^2+n n2+n次,时间复杂度依然是 O ( n 2 ) O(n^2) O(n2)。因为再估算算法的时间复杂度时,只保留最高阶。
    • 二分n个数,需 log ⁡ 2 n \log_2n log2n次,所以算法复杂度为 O ( log ⁡ 2 n ) O(\log_2n) O(log2n)
  • 更多相关知识可以看这里

基本算法详解

  • 二分查找法
    例:在有序的序列中找一个数的算法过程
    在3 5 9 10 12 14 20 84 98中找find=10
数组359101214208498
下标123456789
  1. 首先,找到下边区间的中间位置:mid=(1+9)/2=5
  2. 判断中间位置mid所对应的数m与要找的数find的关系
    1. m>find
      找mid左边的数
    2. m<find
      找mid右边的数
    3. m==find
      找到了,停止
  3. 重复执行2,直到找到

这样每次去掉一半的数比一个一个找要快,但是有前提:有序

  • 分治:分而治之(典型案例:归并排序)
  • 递归:程序自己调用自己的编程技巧称为递归(recursion)
    递归需满足的两个条件:
    1. 有边界值
    2. 一直向边界值靠拢

第四天

排列组合

  • 加法原理:有n种办法 { 第 1 类: a 1 种 第 2 类: a 2 种 第 3 类: a 3 种 . . . . . . \left\{\begin{array}{ll} 第1类:a_1种\\ 第2类:a_2种\\ 第3类:a_3种\\ ...... \end{array}\right. 1类:a12类:a23类:a3......,相加得到总方法数
  • 乘法原理:有n个步骤 { 第 1 步: b 1 种 第 2 步: b 2 种 第 3 步: b 3 种 . . . . . . \left\{\begin{array}{ll} 第1步:b_1种\\ 第2步:b_2种\\ 第3步:b_3种\\ ...... \end{array}\right. 1步:b12步:b23步:b3......,相乘得到总方法数
  • 排列: A n m = n ! ( n − m ) ! A_n^m=\frac{n!}{(n-m)!} Anm=(nm)!n!(从n个选项中选出m个选项排列,有顺序)
  • 组合: C n m = n ! ( n − m ) ! × m ! C_n^m=\frac{n!}{(n-m)!\times m!} Cnm=(nm)!×m!n!(从n个选项中选出m个选项组合,无顺序)

  • 图是由边连接在一起的顶点或结点的集合。
  • 无向图:无方向性。
  • 有向图:有方向性,有向图中的边叫弧。
  • 无向连通图:任意两个顶点都有一条路径(并非直连边),最少有 顶点数 − 1 顶点数-1 顶点数1条边。
  • 有向强连通图:任意两个顶点都有一条路径,最少有 顶点数 顶点数 顶点数条边。
  • 无向完全图:任意两个顶点有一条直连边相连。
  • 有向完全图:任意两个顶点有方向相反的两条弧相连。
  • 带权图:每个边上有一定权重的图。
  • 度(无向图):顶点所具有的边的数目称为顶点的度。
  • 出度和入度(有向图):一个顶点入边的数目称为顶点的入度,一个顶点出边的数目称为定点的出度,度=入度+出度。

  1. 树的简介
1
2
3
4
5
6
7
8
9
10
11
  • 根节点:树层次结构中最高的结点,1
  • 父节点:2是5,6的父节点
  • 兄弟结点:拥有同一个父节点的两个结点,8,9就是兄弟结点
  • 结点的度:拥有子树的数目,4的度是1,2的度是2
  • 祖先节点:层次路径上所有的结点,6的祖先有1,2
  • 叶子结点:度为0的结点,没有子树的结点,3,8,9都是叶子结点
  • 树的深度:所有节点层次值得最大值,上面那棵树的深度为4
  • 说明:结点和节点是一个意思
  1. 二叉树
  • 特点
    1. 每个结点最多有2棵子树
    2. 二叉树是有序的
  • 性质
    1. i i i层做多有 2 i − 1 2^{i-1} 2i1个结点
    2. 深度为 k k k的二叉树做多有 2 k − 1 2^k-1 2k1个结点
  • 满二叉树
    • 所有分支节点有左右子树,叶子结点在同一层上
    • 特点
      1. 叶子结点都在做下层
      2. 非叶子节点的度都为2
      3. 在所有深度相同的二叉树里,它的结点数目最多,叶子结点数目也最多
  • 完全二叉树
    • 满二叉树的叶子结点可以缺少(从最右边起连续),其他结点不可少
    • 满二叉树也是完全二叉树
    • 叶子结点个数: ⌊ ( 节点个数 + 1 ) / 2 ⌋ \lfloor(节点个数+1)/2\rfloor ⌊(节点个数+1)/2
  1. 树的遍历
  • 前序(根)遍历:先遍历根节点,再遍历左子树,再遍历右子树。
  • 中序(根)遍历:先遍历左子树,再遍历根节点,再遍历右子树。
  • 后序(根)遍历:先遍历左子树,再遍历右子树,再遍历根节点。

第五天

真题训练

  • 题目在洛谷有题上有许多,可以直接查看。(推荐从进几年的做起,2019年以后题型有改革)
  • 如果怕自己查答案 ,也可以下载打印做题(密码:csptmu)
  • 如需更多资料,可以私聊。

补充知识可以看我的这篇文章
感谢阅读!如有错别字,请联系我。

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mike_code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值