进制,图论,组合数学部分略,就写了一下自己不熟悉的部分
目录
基本常识
NOIP相关
-
1985年起,CCF每年固定举办全国青少年信息学奥林匹克竞赛(NOI)(1984年也曾举办过)。1995年起,举办NOIP,每年由中国计算机学会统一组织。
-
NOIP2018是第二十四届全国青少年信息学奥林匹克联赛。
-
目前参赛者可以选择使用C、C++、Pascal三种编程语言,初赛不同语言考题不同,复赛试题相同。具体的内容则在竞赛大纲中体现。
-
2016年11月1日,中国计算机学会发布通知:2020年开始,除NOIP以外的NOI系列其他赛事(包括冬令营、CTSC、APIO、NOI)将不再支持Pascal和C语言;从2022年开始,NOIP竞赛也将不再支持Pascal语言。即从NOIP2022开始,NOI系列的所有赛事将全部取消Pascal语言。在无新增程序设计语言的情况下,NOIP系列赛事自2022开始将仅支持C++语言。
-
复赛上机编程可以使用的编辑器是 MinGW Develop Studio、Free Pascal IDE以及北航GAIT研究组开发的GUIDE(GAIT Universal IDE)等。自NOI Linux发行之后NOI、NOIP被要求使用NOI Linux,但许多省因为技术原因仍在使用Windows系统,其中C/C++仍在使用Dev-C++作为IDE。
-
初赛是十月的第2个或第3个星期六下午14:30-16:30
复赛是十一月的第2个星期六下午14:30-18:00(普及组)
十一月的第2个星期六上午8:30-12:00,星期日上午8:30-12:00(共2天,提高组)
语言基础
-
C++,object Pascal,VB,smalltalk(第一个支持动态类型的语言),simula67(第一个面向对象的语言),Java是面向对象的
-
free Pascal,C是面向过程的
-
编译器将高级语言程序转变为目标代码
-
高级语言程序比汇编语言程序更容易从一种计算机移植到另一种计算机
-
第一个高级语言是fortran,Ada是美国军方发明的语言
-
第一个支持面向对象的语言是simula67
硬件技术
一、冯·诺依曼理论
1944年,美籍匈牙利数学家冯·诺依曼(设计出第一台具有存储程序功能的计算机EDVAC)提出计算机基本结构和工作方式的设想。理论要点如下:
- 计算机硬件设备由存储器、运算器、控制器、输入设备和输出设备5部分组成。
- 存储程序思想——把计算过程描述为由许多命令按一定顺序组成的程序,然后把程序和数据一起输入计算机,计算机对已存入的程序和数据处理后,输出结果。
二、微型机的主要技术指标(位)
-
字长:指计算机能够直接处理的二进制数据的位数。单位为位(bit)。
-
主频:指计算机主时钟在一秒钟内发出的脉冲数,在很大程度上决定了计算机的运算速度。
-
内存容量:是标志计算机处理信息能力强弱的一向技术指标。单位为字节(byte)。
8bit=1B 1024B=1KB 1024KB=1MB 1024MB=1TB
2^10B=1KB
2^20B=1MB
2^30B=1GB -
外存容量:一般指软盘、硬盘、光盘、优盘、SD卡等。
-
地址总线宽度与内存大小:计算机的CPU和内存在若干根地址线(每根地址线,代表一个bit位),,n位宽度的地址总线可寻址范围是 个地址。
例如:
某计算机的CPU和内存之间的地址总线宽度是32位(bit),这台计算机最多可以使用4GB的内存。(noip2016提高组初赛T9) -
每个像素的位数:有1(单色),4(16色),8(256色),16(64K色,高彩色),24(16M色,真彩色),32(4096M色,增强型真彩色)。
三、中央处理器
CPU(Central Processing Unit)由运算器、控制器和一些寄存器组成。
运算器:进行各种算术运算和逻辑运算。
控制器:计算机的指挥系统。
CPU的主要性能指标是主频和字长。
CPU的主要任务是执行数据运算和程序控制(寄存器组合内部总线),解释计算机指令以及处理计算机软件中的数据。
编码
一、带符号数的机器码表示方法
-
带符号二进制数最高位的一位数用来表示符号:0表示正,1表示负。
-
原码、反码和补码:
原码:对数取绝对值后,在最高位(左端)补上符号位(0/1)。
反码:正数的反码与原码相同,负数的反码是其原码符号位不变,其余各位按位取反。
补码:
一个数x的补码记作 ,设模是M,x是真值,则补码的定义如下:
若 , ,否则
对于负数的补码有另一种更简便的求法:原码符号位保持“1”,其余各位按位取反,末位再加1。
c++中的机器码一般用补码表示。(便于运算,所以lowbit(x)=x&(-x))
二、定点数和浮点数
-
定点数(Fixed-Point Number)
计算机处理的数据不仅有符号,而且大量的数据带有小数,小数点不占有二进制一位而是隐含在机器数里某个固定位置上。
通常采取两种简单的约定:
(1)定点纯整机器数(定点整数):约定所有机器数的小数的小数点位置隐含在机器数的最低位之后。
(2)定点纯小数机器数(定点小数):约定所有机器数的小数点隐含在符号位之后、有效部分最高位之前。
定点整数/小数都可以有原码、反码和补码三种形式。 -
浮点数(Floating-Point Number)
计算机多数情况下采作浮点数表示数值,与科学计数法相似,把一个二进制数通过移动小数点位置表示成阶码和尾数两部分:
其中:
: 的阶码(Expoent),是有符号的整数
: 的尾数(Mantissa),是数值的有效数字部分,一般规定取二进制定点纯小数形式。
浮点数的格式:阶符 +阶 +尾符 +尾数
浮点数由阶码和尾数两部分组成,底数2不出现,是隐含的。阶码的正负符号 在最前位,阶反映了数 小数点的位置,常用补码表示。尾数即纯小数部分,常取补码或原码,码制不一定和阶码相同。尾数的长度决定了数 的精度。尾数符号叫尾符,是数 的符号,也占一位。
三、ASCII码
American Standard Code for Information Interchange:美国标准信息交换代码
将每个字符用7位的二进制数表示,共有128种状态。
特殊的几个字符:
。
字符内容:大小字母、0~9、其他符号、控制符等+
软件与操作系统及文件
一、操作系统
操作系统(operating system,简称OS)是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存1、决定系统资源供需的优先次序2、控制输入与输出设备3、操作网络与管理文件系统4等基本事务。操作系统也提供一个让用户与系统交互的操作界面。
操作系统的类型非常多样,不同机器安装的操作系统可从简单到复杂,可从移动电话的嵌入式系统到超级计算机的大型操作系统。许多操作系统制造者对它涵盖范畴的定义也不尽一致,例如有些操作系统集成了图形用户界面,而有些仅使用命令行界面,而将图形用户界面视为一种非必要的应用程序。
——摘自维基百科
简单来说:
操作系统是控制与管理计算机系统资源的软件,是硬件的第一层扩充,任何应用软件的运行都必须依靠操作系统的支持。
著名的操作系统:UNIX,Linux,Max OS,Windows,IOS,Android,WP,Chrome OS
二、软件
IE只能在Windows上运行
关系型数据库即是二维表格开出来的数据关系,关系型数据库为主体结构的数据库系统软件:SQL,Oracle,FoxPro,Access
三、文件后缀名
.bat 命令文件 .sys 系统拓展管理文件 .exe 运行文件
临时文件:.tmp .win 窗口文件 .err编译错误文件 .men内存应用 .fp配置文件 .ap生成应用
压缩文件 .zip .rar .arj .lzh .jar
文本文件 .doc .txt .wps
图像文件 .jpg .jpeg .bmp .gif .pcd .psd .mac .pcx .png
动画文件:.flc .pcs .pic .avd .mpeg .qtm .avi .mp4 .swf
声音文件:.aif .svx .snd .mid .voc .wav .mp3
.psd photoshop专用文件
数据结构
一、线性结构
1.线性表:n个数据元素的有限序列:顺序表,链表。内存中可用存储单元地址不一定连续。
2. 栈
3. 队列
二、树
树:任意两个顶点间有且只有一条路径的图(没有回路的连通图)。
森林:互相不交并的树的集合。
树的分类:二叉树,堆,Trie树以及数据压缩中的霍夫曼树(均需要了解掌握)等等。
二叉树
统一设根节点深度为1,二叉树的深度为
- 满二叉树:深度为 ,结点数为 的二叉树
- 完全二叉树:深度为 ,前 层均与满二叉树形态相同,最后一层结点靠左对齐的二叉树
- 完满二叉树:任何非叶结点度数为2的二叉树
算法
一、排序
排序算法的稳定性和复杂度
若排序结束后,值相同的各元素之间相对位置不变,则称这种排序算法是稳定的。
不稳定:
- 选择排序
- 快速排序 平均时间 最坏情况 (对于大的、乱序串列一般认为是最快的已知排序)
- 堆排序
- 希尔排序
- 基数排序 需要 额外存储空间 ( 为特征个数)
稳定:
- 插入排序
- 冒泡排序
- 归并排序 需要 额外存储空间
- 二叉树排序 需要 额外存储空间
- 计数排序 需要 额外存储空间( 为序列中 )
- 桶排序 需要 额外存储空间( 为特征个数)
各排序算法的原理
二、其他算法
一年一道的递归题,高精度,最短路等基础的算法会在大题中考到。