CSP 初赛复习
鹏北海,凤朝阳。又携书剑路茫茫。
本文起笔于 2026.9.18,以后可能会每年更一次 ?
发现第二天就初赛了,感觉问题不大,但有些知识点还理解的不是很透彻,遂有此文。
根据笔者近几年初赛的经验,大概有以下见解。
J 组难度不在算法上,主要是有一些计算机理论和杂七杂八的东西。
S 组差不多只要算法学过一遍就可以随便过了。
所以本文与常见算法基本没有关系,主要注重于一些初赛中常见的理论和冷门算法。
计算机理论
计算机构成
计算机由 运算器、存储器、输入设备、输出设备 构成,即“冯·诺依曼结构”。
-
CPU :中央处理器,由 运算器 + 控制器 + 寄存器 组成。
-
内存 :即内存储器,电脑内部存储,有 RAM(可读可写,断电数据丢失)、ROM(只读,断电数据不丢失)和 Cache(高速缓存,断电数据丢失) 两种存储器。
-
外存 :即外存储器,断电数据保留,主要包括硬盘,光盘,U盘等。
-
输入设备 :传入数据、命令,包括键盘,鼠标,麦克风,摄像头等。
-
输出设备 :呈现出结果的设备,包括显示器,音响,打印机等。
CPU 访问速度 :寄存器 > 高速缓存 > 内存 > 外存。

空间换算
进制转换如下表。

注意上表中的这些单位都有一个 \(i\) 是 \(binary\) 的意思,是二进制下的数据单位。
如果没有 \(i\) ,则是十进制下的数据单位,进制转换的进率是 1000 而不是 1024。
如果要比较两种单位,先统一化成 bit。
重要贡献人员
-
艾伦·图灵(英) :计算机科学之父,AI先驱,首次提出了计算机科学理论,图灵奖被称为“计算机界的诺贝尔奖”。
-
冯·诺依曼(美):现代计算机之父,首次提出了存储程序控制原理,“冯·诺依曼结构”。
-
克劳德·香农(美):通信之父,创建了信息论。
计算机语言
-
机器语言(机器码):计算机能识别的语言,二进制串。
-
汇编语言:用符号代替二进制数,计算机无法直接识别,人类编写难度较大。
-
高级语言:如今的编程语言(C++,JAVA等),要用编译器编译(有两种编译方式)。
-
编译方式(C++):先编译整个程序,再运行。
-
解释方式(Python / PHP):一行一行编译,速度较慢。
-
机器值
-
原码:二进制数,最高位表示正负,0 为 正,1 为 负
-
反码:对于原码,除符号位全部取反(负数)
-
补码:反码 + 1(负数)
正数的原码,反码,补码相同。
对于位运算中含有负数的情况,都可以理解为,把所有数都转化成补码异或,异或以后得到补码,再转成原码。
图片/视频存储以及屏幕分辨率
图片存储所占空间计算公式:水平方向像素数 \(\times\) 竖直方向像素数 \(\times\) 色彩位率 = 图片所占空间(\(bit\))。
视频存储所占空间计算公式:水平方向像素数 \(\times\) 竖直方向像素数 \(\times\) 色彩位率 \(\times\) 视频时长 \(\times\) 视频帧数 = 视频所占空间(\(bit\))。
注意 视频时长 和 帧数 的单位统一。
杂项
排序算法
冒泡,归并,插入,计数,基数 排序 稳定。
选择,快速,希尔,堆,桶 排序 不稳定。
哈夫曼树


主定理


浙公网安备 33010602011771号