CSP-J复习指南(整理中)

· · 个人记录

信息学初赛复习指南

前言

CSP-J/S 简介

(1) 时间和题型

CSP 分入门组 CSP-J 和提高组 CSP-S,前者是小学/初中的,后者是高中的。二者题目不完全相 同,提高组难度高于入门组。

1. 初赛

今年CSP-J第一轮初赛在2020年10月11日进行,可参考历年真题复习。

2. 复赛

第二轮复赛在2020年11月7日。 入门组复赛共 4 道题,每题 100 分,共计 400 分。 试题包括:题目、问题描述、输入输出要求、样例数据(部分题目有样例的说明)。测试时,测试程序为每道题提供了 10-20 组测试数据,考生程序每答对一组得 5 -10 分,累计分即为该道题的得分。程序将在 NOI Linux 1.3(Ubuntu 系统) 的环境下测评,G++编译器版本为 4.4.5,评测系统为Arbiter。2011 年测评器 CPU 为 P4 3.0GHz,内存大小为 1GB。

(2) 初赛大纲

计算机基本常识
  1. 计算机和信息社会(信息社会的主要特征、计算机的主要特征、数字通信网络的主要特征、数字化)
  2. 信息输入输出基本原理(信息交换环境、文字图形多媒体信息的输入输出方式)
  3. 信息的表示与处理(信息编码、微处理部件 MPU、内存储结构、指令,程序,和存储程序原理、程序的三种基本控制结构)
  4. 信息的存储、组织与管理(存储介质、存储器结构、文件管理、数据库管理)
  5. 信息系统组成及互连网的基本知识(计算机构成原理、槽和端口的部件间可扩展互连方式、层次式的互连结构、互联网络、TCP/IP 协议、HTTP 协议、WEB 应用的主要方式和特点)
  6. 人机交互界面的基本概念(窗口系统、人和计算机交流信息的途径(文本及交互操作))
  7. 信息技术的新发展、新特点、新应用等。
    计算机基本操作
  8. Windows 和 Linux 的基本操作知识
  9. 互联网的基本使用常识(网上浏览、搜索和查询等)
  10. 常用的工具软件使用(文字编辑、电子邮件收发等)
    程序设计基本知识
    数据结构
  11. 程序语言中基本数据类型(字符、整数、长整、浮点)
  12. 浮点运算中的精度和数值比较
  13. 一维数组(串)、线性表、队列与栈
  14. 记录类型(PASCAL)/结构类型(C/C++)
    程序设计
  15. 结构化程序设计的基本概念
  16. 阅读理解程序的基本能力
  17. 具有将简单问题抽象成适合计算机解决的模型的基本能力
  18. 具有针对模型设计简单算法的基本能力
  19. 程序流程描述(自然语言/伪码/NS 图/其他)
  20. 程序设计语言(PASCAL/C/C++)
    基本算法处理
  21. 初等算法(计数、统计、数学运算等)
  22. 排序算法(冒泡法、插入排序、合并排序、快速排序)
  23. 查找(顺序查找、二分法)
  24. 简单搜索
  25. 字符串处理
  26. 回溯算法
  27. 递归算法

    (3) 复赛大纲

    在初赛内容的基础上增加以下内容:

    计算机软件
  28. 操作系统的使用
  29. 编程语言的使用
    数据结构
  30. 指针类型
  31. 多维数组
  32. 单链表及循环链表
  33. 二叉树
  34. 文件操作
    程序设计
  35. 算法的实现能力
  36. 程序调试基本能力
  37. 设计测试数据的基本能力
    算法处理
  38. 离散数学知识的应用(如排列组合、简单图论、数理逻辑)
  39. 分治
  40. 模拟法
  41. 贪心法
  42. 简单搜索算法、剪枝
  43. 动态规划

第一部分 计算机发展及应用

1. 计算机的发展

1946年2月,在美国宾夕法尼亚大学诞生了世界上第一台电子计算机 ENIAC(Electronic Numerical Integrator And Computer),这台计算机占地 170 平方米,重 30吨,用了 18000 多个电子管,每秒能进行 5000 次加法运算。 1958 年中国研制了第一台电子管计算机,速度每秒二千次。 “银河”1983 年问世,运算速度为每秒 1 亿次。 2001 年,中科院计算所研制成功我国第一款通用 CPU——”龙芯”

2. 计算机的名人

冯•诺依曼 ————计算机之父

1944 年 8 月至 1945 年 6 月,美籍匈牙利科学家冯•诺依曼提出了一个全新的计算机概念,即“冯•诺依曼计算机”模型。主要贡献:确立了现代计算机的基本结构。

艾兰•图灵 ————人工智能之父,图灵机

“图灵奖”是计算机科学领域的最高奖项,有“计算机界诺贝尔奖”之称。设立这个大奖,既是为了促进计算机科学的进一步发展,也是为了纪念一位天才数学家、计算机科学的奠基人艾兰•图灵。图灵是走在时代前面的天才,在计算机远未问世之前,他构造出一台完全属于想象中的”计算机”,数学家们把它称为”图灵机”,而冯•诺依曼相当于把图灵虚构的”图灵机”进行了实现。(图灵机不是一台真正的计算机)

摩尔 ———— 摩尔定律

1965 年,英特尔联合创始人戈登•摩尔提出以自己名字命名的”摩尔定律”,意指集成电路上可容纳的元器件的数量每隔 18 至 24 个月就会增加一倍,性能也将提升一倍。(摩尔定律过去是每 5 年增长 10 倍,每 10 年增长 100 倍。而如今,摩尔定律每年只能增长几个百分点,每 10 年可能只有 2 倍。因此,摩尔定律结束了。)

比尔•盖茨

比尔•盖茨(Bill Gates),全名威廉•亨利•盖茨三世,简称比尔或盖茨。1955 年 10月 28 日出生于美国华盛顿州西雅图,企业家、软件工程师、慈善家、微软公司创始人。曾任微软董事长、CEO 和首席软件设计师。微软公司在个人计算机和商业软件、服务和互联网技术方面都是全球范围内的领导者。我们所用的 windows 操作系统系列,office 等应用软件都是他们的产品。

王选

江苏无锡人,出生于上海,计算机文字信息处理专家,计算机汉字激光照排技术创始人,当代中国印刷业革命的先行者,被称为“汉字激光照排系统之父”,被誉为“有市场眼光的科学家”。 1958 年毕业于北京大学数学力学系,1984 年晋升为教授,1991 年当选为中国科学院院士,1994 年当选为中国工程院院士,1995 年加入九三学社,2002 年 2 月 1 日获得 2001 年度国家最高科学技术奖,陈嘉庚科 学奖获得者。

3. 计算机的特点

 速度快——普通计算机每秒可执行几亿次运算  计算精度高——主要取决于计算机的字长  记忆能力强——有存储器  可靠的逻辑判断能力——能进行逻辑运算  有自动控制能力——具有程序控制下的自动执行能力

4. 计算机语言的发展

第一代: 机器语言

由 0 和 1 组成,能让计算机直接接受的代码称为机器指令。 所谓机器语言是指计算机指令的集合 机器语言的缺点: 难学、难写、难记、难检查、难修改

第二代: 汇编语言

由于机器语言难以记忆,汇编语言使用了一些助记符来表示每一条机器指令。但 汇编语言要通过汇编程序翻译成机器语言才能执行 汇编语言的缺点: 只适应于特定的计算机

第三代: 高级语言

第一种高级语言是 fortran
比较常见的高级语言有: pascal,c,basic,fortran
把高级语言翻译成机器语言有两种方式:
编译方式:把高级语言写的源程序直接输入计算机,编译程序把整个源程序翻译成目标程序,然后由计算机执行目标程序(Pascal,C/C++采用编译方式)
解释方式:把高级语言写的源程序直接输入计算机,解释程序把源程序逐句翻译,翻译一句马上执行,边解释边执行

第四代: 面向对象的高级语言

如果说第三代语言要求告诉计算机怎么做,那么第四代语言只需要告诉计算机做什么。第一个面向对象的语言是smalltalk。
比较常见的面向对象的高级语言有:free pascal,C,C++,object pascal,c# 等

第五代: 人工智能语言

代表语言是 LISP 语言和 Prolog 语言
NOIP 比赛可使用的语言:Pascal , C/C++

5. 计算机的分类

1. 以”代”分类:

 第一代:1946~1957 年,电子管计算机
 第二代:1958~1964 年,晶体管计算机
 第三代:1965~1971 年,中小规模集成电路计算机
 第四代:1972 至今,大规模集成电路计算机
 第五代:人工智能计算机

2. 以功能规模分类

巨型机、大型机、中型机、小型机、微型机(如 PC 即个人电脑)

6. 计算机的应用

科学计算:弹道轨迹、天气预报、高能物理等等
数据处理(即信息处理):企业管理、物资管理、电算化等
自动控制:工业自动化控制,卫星飞行方向控制
计算机辅助设计和教学
人工智能

第二部分 计算机硬件

1944 年,美籍匈牙利数学家 冯•诺依曼 提出计算机基本结构和工作方式的设想,为计算机的诞生和发展提供了理论基础。时至今日,尽管计算机软硬件技术飞速发展,但计算机本身的体系结构并没有明显的突破,当今的计算机仍属于冯•诺依曼架构。 计算机硬件设备由存储器、运算器、控制器、输入设备 和 输出设备(I/O 设备)五个部 分组成。  存储程序思想——把计算过程描述为由许多命令按一定顺序组成的程序,然后把程序和数 据一起输入计算机,计算机对已存入的程序和数据处理后,输出结果。 1) 微型机的主要技术指标  字长:知己算计能够直接处理的二进制数据的位数。单位为位(BIT)  主频:指计算机主时钟在一秒钟内发出的脉冲数,在很大程度上决定了计算机的运算 速度。  内存容量:是标志计算机处理信息能力强弱的一向技术指标。单位为字节(BYTE)。  外存容量:一般指软盘、硬盘、光盘。 计算机硬件由五大部分组成:运算器、控制器、存储器、输入设备、输出设备(I/O 设备)。 2) 中央处理器(CPU——Central Processing Unit)  由运算器、控制器和一些寄存器组成;  运算器进行各种算术运算和逻辑运算;  控制器是计算机的指挥系统;  CPU 的主要性能指标是主频和字长。 3) 存储器  内部存储器 中央处理器能直接访问的存储器称为内部存储器,它包括快速缓冲存储器和主存储器, 中央处理器不能直接访问的存储器称为外部存储器,外部存储器中的信息必须调入内存后 才能为中央处理器处理。 主存储器:内存也常泛称主存,但严格上说,只有当内存中只有主存,而没有快速缓 冲存储器时,才能称为主存。 主存储器按读写功能,可分只读存储器(ROM)[断电后信息不丢失]和随机存储器(RAM) [断电后信息丢失]两种。  外部存储器 外存储器:也称为辅助存储器,一般容量较大,速度比主存较慢。 硬盘(Hard disk):将盘片、读写磁头及驱动装置精密地组装在一个密封盒里;采用接 触式起停,非接触式读写的方式(磁盘不工作时,磁头停在磁盘表面的起停区,一旦加电 后,磁头随着盘片旋转的气流“飞”起来,悬浮在磁盘表面,进行读写)。 软盘(Floppy Disk):目前常见的是 3.5 英寸/1.44 MB 的软盘。 光盘存储器(CD-ROM):普通的 CD-ROM,只能读,不能写; CD 盘片的存储量大约 是 650 MB。  高速缓冲存储器 又叫 Cache,由于 CPU 速度远大于内存,所以它在中间起协调作用。  比较 内存和外存的主要区别:内存小/外存大,内存贵/外存便宜,内存快/外存慢 存储器的速度:寄存器>Cache>内存>外存(辅存) 4) 输入设备  键盘(Keyboard):目前大多使用 104 或 108 键盘  鼠标(Mouse):主要有机械型鼠标和光电型鼠标两种  扫描仪(Scanner)  手写笔、触摸屏、麦克风  视频输入设备、条形码扫描器 5) 输出设备  显示器(Monitor):目前主要有 CRT(阴极射线管)显示器和 LCD 液晶显示器。  打印机(Printer):主要有针式打印机、喷墨打印机、激光打印机。  绘图仪、音箱 计算机在运行时,先从内存中取出一条指令,通过控制器的译码,按指令的要求,从存储器中 取出数据进行指定的运算和逻辑操作等加工,然后再按地址把结果送到内存中去。 接下来取出下一条指令,在控制器的指挥下完成规定操作,依次进行下去,直到遇到停止指令 各部分联系示意图 第三部分 软件与操作系统 软件系统按其功能以及重要性可主要分为系统软件和应用软件两大类,系统软件管理整个计算 机系统,应用软件在系统软件的基础上使计算机能解决各种实际问题。 1) 应用软件在系统软件的基础上开发,但系统软件也属于应用软 件  系统软件:用来支持应用软件的开发和运行的,主要是操作系统软件如:DOS、 Windows95/98/2000、Unix、Linux、WindowsNT;  应用软件:为了某个应用目的而编写的软件,主要有文字处理软件、电子表格软件、 数据库管理软件等。 2) 操作系统(OS——Operating System) 操作系统是控制与管理计算机系统资源的软件,是硬件的第一层扩充,任何应用软件 的运行都必须依靠操作系统的支持。 操作系统大致有:dos , ucdos , windows 系列 , Linux , unix , os/2 ... Windows 系列操作系统 Windows 是 Microsoft 公司开发的图形化界面的操作系统。  基本概念: 图标、任务栏、标题栏、菜单栏、滚动条、工具栏、对话框、开始菜单„„  基本操作: (1)鼠标单击、双击、拖动,左键、右键功能; (2)窗口操作:最大(小)化、大小调整、拖动、关闭、排列、切换; (3)剪贴板:复制(Ctrl-C)、粘贴(Ctrl-V)、剪切(Ctrl-X) 复制屏幕图像:可将当前屏幕图形以 BMP 格式传送到剪贴板„„ (4)其它:查找、运行、切换 Windows、进入 DOS 环境、文件夹选项 3) 语言处理软件  Basic , Cobol , Pascal ,C/C++ ,Java 4) 数据库管理系统  Sybase , dbase , foxbase , foxpro , access , oracle , mysql 5) 常用的应用软件  Office 系列:Word(文字处理) , Excel(表格处理) ,Frontpage(网页制作) , Powerpoint(幻 灯片)  图像处理软件: 画图 、 photoshop ,fireword , Acdsee  网页制作软件: dreamweaver  声音处理软件: goldwave  动画制作软件: flash 6) 常见的文件类型扩展名  可执行类文件: bat、com、exe、sys、tmp、zip、„„  文档类文件: doc、xls、txt、htm、„„  图像文件: bmp、gif、jpg、psd、„„  音频文件: wav、avi、mp3、swf…… 第四部分 进制与编码 1) 四种常用的数制及它们之间的相互转换: 进制 基数 基数个数 权 进数规律 十进制 0、1、2、3、4、5、6、7、8、9 10 10i 逢十进一 二进制 0、1 2 2i 逢二进一 八进制 0、1、2、3、4、5、6、7 8 8i 逢八进一 十六进制 0、1、2、3、4、5、6、7、8、9、A、 B、C、D、E、F 16 16i 逢十六进一 十进制数转换为二进制数、八进制数、十六进制数的方法: 二进制数、八进制数、十六进制数转换为十进制数的方法:按权展开求和法 2) 二进制与十进制间的相互转换: (1)二进制转十进制 方法:“按权展开求和” 例:(1011.01)2 =(1×2 3+0×2 2+1×2 1+1×2 0+0×2 -1+1×2 -2 )10 =(8+0+2+1+0+0.25)10 =(11.25)10 规律:个位上的数字的次数是 0,十位上的数字的次数是 1,......,依奖递增,而十分位 的 数字的次数是-1,百分位上数字的次数是-2,......,依次递减。 注意:不是任何一个十进制小数都能转换成有限位的二进制数。 (2)十进制转二进制 十进制整数转二进制数:“除以 2 取余,逆序排列”(短除反取余法) 例: (89)10 =(1011001)2 十进制小数转二进制数:“乘以 2 取整,顺序排列”(乘 2 取整法) 例: (0.625)10 = (0.101)2 0.625 X 2 1.25 1 X 2 0.5 0 X 2 1.0 1 3) 八进制与二进制的转换: (1)二进制数转换成八进制数:从小数点开始,整数部分向左、小数部分向右,每 3 位为一组用一位八进制数的数字表示,不足 3 位的要用“0”补足 3 位,就得到一个八 进制数。 (2)八进制数转换成二进制数:把每一个八进制数转换成 3 位的二进制数,就得到 一个二进制数。 例:将八进制的 37.416 转换成二进制数: 3 7 . 4 1 6 011 111 . 100 001 110 即:(37.416)8 =(11111.10000111)2 例:将二进制的 10110.0011 转换成八进制: 0 1 0 1 1 0 . 0 0 1 1 0 0 2 6 . 1 4 即:(10110.011)2 = (26.14)8 4) 十六进制与二进制的转换: (1)二进制数转换成十六进制数:从小数点开始,整数部分向左、小数部分向右, 每 4 位为一组用一位十六进制数的数字表示,不足 4 位的要用“0”补足 4 位,就得到 一个十六进制数。 (2)十六进制数转换成二进制数:把每一个八进制数转换成 4 位的二进制数,就得 到一个二进制数。 例:将十六进制数 5DF.9 转换成二进制: 5 D F . 9 0101 1101 1111 .1001 即:(5DF.9)16 =(10111011111.1001)2 例:将二进制数 1100001.111 转换成十六进制: 0110 0001 . 1110 6 1 . E 即:(1100001.111)2 =(61.E)16 注意:以上所说的二进制数均是无符号的数。这些数的范围如下表: 无符号位二进制数位数 数值范围 十六进制范围表示法 8 位二进制数 0~255(255=28 -1) 00~0FFH 16 位二进制数 0~65535 (65535=216