CSP初赛复习

呵呵,来复习一下CSP初赛。

选择题知识点大致范围:
计算机基本常识:
IT文化、微机原理、信息安全、基本应用
与奥赛活动有关的知识
程序语言及算法基础
相关计算
数据结构(串、栈、队、树、图)
离散数学:排列组合、数理逻辑

程序语言及算法基础

了解算法的五大特征:
有穷性、确定性、可行性、0或多个输入、有一个或多个输出
要求掌握的排序有:
选择、冒泡、插入、归并、快速、堆、排序二叉树
理解每种排序的算法思想
了解每种排序的时间复杂度及其稳定性

排序稳定性

如果(i<j,a[i]=a[j]),在排序后能保证仍然(a[i])(a[j])前的,即为稳定。

不稳定排序

堆排序、快速排序、希尔排序、直接选择排序

稳定排序

基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序

二叉树

树:普通二叉树、满二叉树、完全二叉树
二叉树的特点:
1、第i层的结点最多为2i-1(i>=1)个结点,深度为K(K>=1)的二叉树最多有2k-1个结点。
2、在二叉树中,如果其叶子结点数为n0,则其度为2的结点数为n2=n0-1。
完全二叉树的特点:
1、树叶只可能在层次最大的两层上出现。
2、对任一结点,左子树的深度或者比右子树的深度多1,或者与右子树深度相等。
3、具有n个结点的完全二叉树的深度为K=[log2n] +1

二叉树的遍历

前序遍历(DLR):根,左子树,右子树
中序遍历(LDR):左子树,根,右子树
后序遍历(LRD):左子树,右子树,根
已知前序遍历(或后序遍历)和中序遍历,就能唯一确定其他一种遍历
已知前序遍历和后序遍历,不能唯一确定中序遍历

完全二叉树

若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。
就是说除第h层外为满二叉树,且第h层为从左到右的。

为什么对于完全二叉树,叶子节点只可能在层次最大的两层上出现?

满二叉树的叶子节点都在层次最大的一层,从满二叉树的最后一个叶子节点开始,依次向前(向左)删除若干个叶子节点,得到一棵完全二叉树,被删叶子节点的上一层(层次第二大的)节点因失去叶子,成为新的叶子节点。如此,叶子节点出现在最大层和次大层。
只有当最大层叶子节点删除完,才可以删除次大层叶子节点,此时次大层变成新的最大层,叶子节点仍然只可能出现在层次最大的两层上。

进制转换

嗯嗯,我来口胡一下这个东东。
其实看看这个也不错

其他进制转十进制

其他进制转十进制的也十分简单,我们设个位为第0位,往前一次递增,往后则为负数。
那么十进制结果就是各个位上的数乘以进制的位数次方。
(1011.01)2=(1×23+0×22+1×21+1×20+0×2-1+1×2-2)10 
=(8+0+2+1+0+0.25)10 =(11.25)10

十进制转二进制

十进制整数转二进制数:“除以2取余,逆序排列”(短除反取余法)
十进制小数转二进制数:“乘以2取整,顺序排列”(乘2取整法)

八进制转二进制

二进制数转换成八进制数:从小数点开始,整数部分向左、小数部分向右,每3位为一组用一位八进制数的数字表示,不足3位的要用“0”补足3位,就得到一个八进制数。
八进制数转换成二进制数:把每一个八进制数转换成3位的二进制数,就得到一个二进制数。
例:将八进制的37.416转换成二进制数: 
3     7   . 4    1     6
011  111  .100  001  110 
即:(37.416)8 =(11111.10000111)2 
例:将二进制的10110.0011 转换成八进制:
010  110 . 001 100
2    6  .  1    4  
即:(10110.011)2 = (26.14)8

相关内存单位转换

位 bit (比特)(Binary Digits):存放一位二进制数,即 0 或 1,最小的存储单位。[英文缩写:b(固定小写)]

字节byte:8个二进制位为一个字节(B),最常用的单位。

1 Byte(B) = 8 bit

1 Kilo Byte(KB) = 1024B

1 Mega Byte(MB) = 1024 KB

1 Giga Byte (GB)= 1024 MB

1 Tera Byte(TB)= 1024 GB

强连通图

强连通图(Strongly Connected Graph)是指在有向图G中,如果对于每一对vi、vj,vi≠vj,从vi到vj和从vj到vi都存在路径,则称G是强连通图。
有向图中的极大强连通子图称做有向图的强连通分量。

定理:一个有向图是强连通的,当且仅当G中有一个回路,它至少包含每个节点一次。

在计算机中带符号数的表示法

原码:

在用二进制原码表示的数中,符号位为0表示正数,符号位为1表示负数,其余各位表示数值部分。
如:10000010,00000010

反码:

反码的定义如下:
⑴对于正数,它的反码表示与原码相同。即[x]反=[x]原
⑵对于负数,则除符号位仍为“1”外,其余各位“1”换成”0”,”0”换成1”,即得到反码[X]反。例如[-1101001] 反=10010110。

⑶对于0,它的反码有两种表示:[+0] 反=00…0 [-0] 反=11…1

补码:

正数的补码就是该正数本身。
[01100100]补 =01000100
对于负数:两头的1不变,中间取反。
[10100100]补 =11011100
[+0]补=[-0]补=00…0。

错题总结:

1、快速排序和归并排序都有运用分治思想。

2、要审清题意,是问“正确”还是“不正确”,“能”还是“不能”。

3、暴力一定不要有错,最好验算一下。

4、要认真看清楚共做几个任务,每两队之间比几场赛。

5、阅读程序写结果的输出要注意输出的标点符号。

6、完善程序要先认真理解程序含义。

7、NOIP竞赛从2022年开始将不支持Pascal。

8、补码 = 反码 + 1,且第一位表示符号,1为负,0为正。

9、闰年是%4=0且如果为世纪年的话要%400=0。

10、
∧:称为合取,就是逻辑与,例如:P∧Q 当且仅当P与Q同时为真(T)时,结果为真,其余全为假(F)
∨:称为析取,就是逻辑或,例如: P∨Q,当且仅当P与Q同时为F时,结果为假,其余全为真。
┐:为逻辑非

转载需注明出处。
原文地址:https://www.cnblogs.com/jz929/p/11644419.html