CSP初赛知识点复习.pdf
《CSP初赛知识点复习.pdf》由会员分享,可在线阅读,更多相关《CSP初赛知识点复习.pdf(13页珍藏版)》请在冰豆网上搜索。
1CSP-J/S(初赛初赛)知识点知识点精精讲讲NOIP(全国青少年信息学奥林匹克竞赛)于2019年取消。
取而代之的是由CCF推出的非专业级软件能力认证,也就是现在的CSPJ/S。
CSP非专业级认证的第一轮(也就是NOIP初赛)常常使某些大神对基础知识不太了解无缘复赛.所以今天学习下初赛知识点。
信息学史及基本知识信息学史及基本知识一、信息学及计算机史一、信息学及计算机史计算机的顶级奖项计算机的顶级奖项:
图灵奖、冯诺依曼奖图灵奖:
由ACM(美国计算机协会)设立于1966年。
是“计算机界的诺贝尔奖”。
冯诺依曼奖:
由IEEE设立。
对信息科学做出突出贡献的大神对信息科学做出突出贡献的大神:
图灵(所以才有个奖),冯诺伊曼中国获图灵奖的大神中国获图灵奖的大神:
姚期智(清华就有姚班,就是以他的名字命名的)世界第一台电子计算机世界第一台电子计算机:
埃尼阿克(ENIACENIAC),于1946年2月14日在美国宾夕法尼亚大学诞生。
又被叫做电子管计算机。
二、关于编程二、关于编程编程语言编程语言:
分两类:
面向对象和面向过程。
高级语言和低级语言的区别高级语言和低级语言的区别:
高级语言需要编译运行,常数较大,运行速度慢。
而低级语言常数极小,运行速度快。
此外,高级语言更容易移植。
常见低级语言常见低级语言:
汇编面向对象的高级语言面向对象的高级语言:
C+,Java,EIFFEL,Simula67等。
面向过程的高级语言面向过程的高级语言:
C,Fortran语言。
递归编程递归编程:
2递归是指一种通过重复将问题分解为同类的子问题而解决问题的方法。
递归式方法可以被用于解决很多的计算机科学问题。
简单来讲,就是“自身调用自身”(在函数中)。
P类类/NP类类/NPC类问题类问题:
1、P类问题:
如果一个问题能找到一个在多项式时间内解决它的算法,那么这个问题就是P问题。
2、NP类问题:
注意:
NP问题不是非不是非P类问题类问题,而是在多项式时间内验证一个解的问题。
或者,我们可以将其理解为在多项式时间内猜出一个解的问题。
3、NPC类问题:
定义如下:
如果一个问题是NP问题,而且所有的NP问题都可以约化到它。
那么它就是NPC类问题。
再来介绍一下关于约化的定义:
如果一个问题A可以约化为问题B,含义就是这个问题A可以用问题B的解法来解决。
三、关于计算机三、关于计算机先上张大图:
重要设备重要设备:
硬件组成:
控制器(Control):
是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。
3运算器(Datapath):
运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。
存储器(Memory):
存储器的功能是存储程序、数据和各种信号、命令等信息,并在需要时提供这些信息。
输入设备(Inputsystem):
输入设备是计算机的重要组成部分,输入设备与输出设备合称为外部设备,简称外设,输入设备的作用是将程序、原始数据、文字、字符、控制命令或现场采集的数据等信息输入到计算机。
常见的输入设备有键盘、鼠标器、光电输入机、磁带机、磁盘机、光盘机等。
输出设备(Outputsystem):
输出设备与输入设备同样是计算机的重要组成部分,它把外算机的中间结果或最后结果、机内的各种数据符号及文字或各种控制信号等信息输出出来。
微机常用的输出设备有显示终端CRT、打印机、激光印字机、绘图仪及磁带、光盘机等。
CPU及存储及存储:
CPU(中央处理器)=运算器+控制器+寄存器运算器=算术逻辑运算单元(ALU)及浮点运算单元(FPU)存储器=内存储器+外存储器BIOS是英文BasicInputOutputSystem的缩略语,直译过来后中文名称就是基本输入输出系统。
其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。
其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。
随机存储器RAM的“随机”指“随时访问”所以,我们记下来以下知识点:
断电后可以保存数据:
硬盘,断电后可以保存数据:
硬盘,ROM断电后不可以保存数据:
显存(显卡内存),断电后不可以保存数据:
显存(显卡内存),RAM,CPU计算机各存储单位及进位关系计算机各存储单位及进位关系:
计算机的存储单位有以下几种:
TB/GB/MB/KB/B他们之间的进位关系为1024(这应该是常识,没打过比赛还没玩过手机么?
)4特殊地,1B=8(bit),这里的bit是二进制下的一位内存。
进制及进制转化进制及进制转化十进制转任意进制十进制转任意进制将十进制转换成N进制,只需把十进制数每次除N求余数,然后把余数逆序写出来。
看不懂就看图:
150的二进制数就是:
10010110这是二进制的图,其他进制就类比推一下就可以了。
如果这个看不懂的话就不要参加初赛了,50块钱买点啥不好.任意进制转十进制任意进制转十进制简单说就是:
按位转,第i位的数字乘以要转换的进制的n1次幂即可。
还是上图:
5任意进制互相转化任意进制互相转化这里考虑用十进制做中转,先把A进制转十进制,再把十进制转B进制。
关于小数的进制转换关于小数的进制转换十进制转任意进制的小数不进行除法运算,而进行乘法运算后取整,取整后从前向后排列。
任意进制转十进制的小数只需要乘上负指数,最后算出来即可。
各进制的字母表达各进制的字母表达H(Hexadecimal)16进制D(Decimal)10进制O(Octonary)8进制B(Binary)2进制二进制的相关知识二进制的相关知识二进制是计算机进行计算所使用的工具,自然也是非常常考的要点。
二进制的相关知识有许多,甚至算法中的位运算也是二进制的相关内容,但为了过第一轮初赛,我们只介绍一些理论知识。
关于位运算的相关知识请有兴趣的同学自己学习。
1、原码、原码顾名思义,原码就是十进制数直接转换成二进制之后直接形成的二进制编码。
2、补码、补码正数的补码是本身,负数的补码是其反码加一反码加一。
3、反码、反码顾名思义:
正数的反码是本身,负数的反码是其除符号位之外的所有位按位取反的结果。
6附:
附:
ASCII码码ASCII码的正规名称是:
美国信息交换标准代码美国信息交换标准代码,是基于拉丁字母的一套电脑编码系统。
是最通用的信息交换标准。
一共定义了128个字符。
这里不赋ASCII码的转换表。
只给出几种比较常用的转换:
字符048大写字母A65小写字母a97空格32换行13位运算位运算位运算不仅在初赛中是一个知识点分类,在复赛(即真正的程序设计与运用)的时候也有很大的一个应用。
而且,位运算的相关知识是计算机运算的灵魂,更是每个程序猿应该理解的一种基本操作。
关于位运算的相关知识,本蒟蒻在另一篇专门的博客中详细的讲解。
常用的位运算技巧为了应对初赛的笔试题,建议读者在阅读完这篇博客之后至少应该掌握:
各种位运算的运算各种位运算的运算法则以及位运算优先级法则以及位运算优先级。
另外另外,对于位运算的优先级对于位运算的优先级,本蒟蒻在后面的逻辑运算部分还本蒟蒻在后面的逻辑运算部分还会有详细的解析。
会有详细的解析。
逻辑运算逻辑运算逻辑运算逻辑运算逻辑运算一共有三种,每种都有两种写法:
逻辑非逻辑非:
!
或逻辑与逻辑与:
&或逻辑或逻辑或:
|或逻辑运算的优先级逻辑运算的优先级非与或7位运算位运算+逻辑运算的优先级逻辑运算的优先级逻辑非(!
,逻辑非(!
,)=按位反(按位反()位移运算(位移运算()不等号(不等号(=,等号(等号(=,!
=)按位与(按位与(&)按位异或(按位异或()按位或(按位或(|)逻辑与(逻辑与(&,)逻辑或(逻辑或(|,)逻辑表达式逻辑表达式由逻辑运算复合而成,只有两种结果:
true和false,在C/C+中,返回的值以0表示假,以1表示真。
条件表达式条件表达式条件表达式的基本形式如下:
?
:
其表达意义是:
如果表达式1成立,则执行表达式2,否则执行表达式3。
其实也等价于ifelseifelse条件语句。
例如下:
#defineMin(a,b)ab?
a:
b注意注意:
如果条件表达式有多个进行复合,那么在执行的时候需要从由往左依次判断最后得出一个结果。
即:
右结合性右结合性。
比如:
?
:
?
:
那么,在执行的时候是从3开始判断是否为真,然后执行某一个表达式,依次向上回溯。
图论理论知识图论理论知识基本概念基本概念完全图完全图:
任意两点都有边相连,我们很容易推出来,一张完全图的边数为(n为节点个数)n(n1)2连通图连通图:
顾名思义,连通图就是连通的图,即任意两点都能直接或间接直接或间接到达,这就区别于完全图必须直接用边到达的定义。
树树:
emm.直观来讲,就是一张长得像树的图。
定义是任意两点之间的简单路径有且只有一条。
树是一棵连通且无环的图。
它的边数是n1。
8二叉树的遍历二叉树的遍历二叉树有不同的遍历方式,一般来讲,我们将其分成三类:
先序遍历(也叫先根遍历)、中序遍历(中根遍历)以及后序遍历(后根遍历)。
先序遍历先序遍历:
遍历方式如下:
根左儿子右儿子中序遍历中序遍历:
遍历方式如下:
左儿子根右儿子后序遍历后序遍历:
遍历方式如下:
左儿子右儿子根我们用一张图来理解一下这几种遍历方式。
这张图的先序遍历:
1245367中序遍历:
4251637后序遍历:
4526731一个推论一个推论:
先序遍历+中序遍历=一棵确定的二叉树9后序遍历+中序遍历=一棵确定的二叉树先序遍历+后序遍历=啥也不是特殊二叉树及其性质特殊二叉树及其性质完全二叉树完全二叉树:
只有最后一层不是满的,且最后一层的所有节点均集中在左侧。
图例如下:
满二叉树满二叉树:
节点个数已满。
图例如下:
10特殊二叉树的性质特殊二叉树的性质:
1、对于一棵完全二叉树来讲,它的叶子节点为n,则节点总数为2n1。
此结论可逆。
2、对于一棵满二叉树来讲,它的层数(深度)为k,则它的节点总数为2k1。
此结论可逆。
拓扑排序拓扑排序本蒟蒻有一篇专门讲拓扑排序的讲解:
拓扑排序详解简单数据结构基本理论简单数据结构基本理论1、栈、栈想象一个桶,你从上面往里扔砖,然后你想把某一块砖拿出来,你需要先拿出来你后扔进去的砖。
这就是栈。
栈的基本原则是:
后进先出来一发图示?
11附:
前、中、后缀表达式附:
前、中、后缀表达式一篇专门的博客:
浅谈前、中、后缀表达式2、队列、队列想象你在排队买票,这个队伍中的人都非常有素质,都自觉排队而且不会提前离开队伍。
这样就只能从队首买完票再离开,从队尾进入队伍。
队列的基本原则是:
先进先出。
再来一发图示:
3、链表、链表链表分两种:
单向链表和双向链表。
关于链表,我有一篇专门讲解的博客。
有兴趣的读者请戳:
链表详解4、字符串、字符串字符串子串的概念:
字符串是一串字符(废话),它的子串被定义为:
字符串中任意个连续任意个连续的字符组成的子序列的字符组成的子序列。
字符串子串个数的计算公式:
12n(n+1)2+1(就是字符串长度等差数列)如果是非空子串,就把那个一减去即可(子串个数的公式加一就是考虑空子串的情况)。
时空复杂度的计算时空复杂度的计算时间复杂度时间复杂度:
渐进时间复杂度用符号O表示。
一个程序的语句执行次数可以用一个代数式表示,那么我们取这个代数式的最高次项且忽略此项系数作为时间复杂度。
如果一个程序的语句执行次数为2n3+3n2+n+7,那么这个程序的渐进时间复杂度为O(n3)。
计算非递归程序的时间复杂度计算非递归程序的时间复杂度:
简单粗暴,数循环。
常数常数:
常数即为我们忽略掉的OO中最高次项的系数与低次项所带来的时间消耗。
空间复杂度空间复杂度:
类比时间复杂度。
看开空间开了多大。
计算空间占用量计算空间占用量:
根据我们以上说过的计算机存储单位的知识:
一个int占用的内存是4B,所以我们把开的int乘上4,再除以1024就是KB,同理,再除1024就是MB。
公式:
n为元素个数,M为最终答案(以MB为单位)M=4n10241024PS:
一般来讲,比赛中所给的256MB内存可以开6107个int类型的变量。
另外,大数组必须开全局变量。
如果扔在主函数里极容易爆栈。
13数学、逻辑学及运筹学知识数学、逻辑学及运筹学知识排列组合排列组合:
排列组合是每年必考知识点。
但是这是一个比较大的课题。
不仅是高二数学选修重点,也是数学编程的一个重要分支。
关于排列组合及相关知识,我有一个专门讲解排列组合的博客,欢迎读者翻阅:
浅谈排列组合幻方幻方题目类型整理题目类型整理题型题型知识点类型知识点类型题目题目数量数量单选信息学史&基本知识8-10单选C+语法知识点2-3单选数据结构&算法3-4单选数学&逻辑学&运筹学3-4单选比赛相关知识1-2问题求解数学1问题求解数据结构1模拟程序运行C+语法&算法4完善程序C+语法&算法2