CSP-X初赛知识点

时间复杂度

她是函数。

说起她的前世今生,你还需要知道一个叫大T的函数。

我们在写程序时,会用分号将每一个语句隔开。现在,我们将一个语句,也就是一个分号前面的那坨,的复杂度,看做一个单位复杂度。一个程序的复杂度实质上就是这个程序所包含的单位复杂度数量。所以,算大T复杂度,我们要做的就是去数这个程序执行了多少个单位复杂度的语句。

然后这个量呢是会随着你输入的数据而改变的。比如遍历1~n,你输入n=10,他的大T就是10。(或者更严谨地计算,你应该加上for循环的判断语句)那么我们就发现,n是自变量,大T的值是因变量,这就是一个函数了。gif.latex?T%28n%29%3Dn。

然后我们发现算大T非常的不方便呀,真正严谨的大T甚至很多鸡毛蒜皮的语句也要算进去,更别提那几百行的搜索了。很多时候我们只需要估计这个程序的大致复杂度是多少,于是有了大O。

把大T转换成大O,我们需要省略里面的常数,不管是单独加在外面的还是某一项的系数。很多小伙伴就有疑问,那y=x岂不是和y=100x一样了?其实差不多。常数在复杂度里真的是微乎其微。为什么?因为他不会随着输入的数据而变大。您可以稍微想象一下。

O(1)常数阶 < O(logn)对数阶 < O(n)线性阶 < O(n^2)平方阶 < O(n^3)(立方阶) < O(2^n) (指数阶)


位运算

位运算的优先级

非>位移>与>异或>或

这个很简单,相信大家都会。

逻辑运算也差不多就那套,就是稍微注意一下与的尖尖是朝上的,或的是朝下的。

进制之间相互转化,相信大家都已经学过了。如果你忘了你就对不起你小学数学老师,你可以去搜一下短除法。

然后我们一般不太习惯两个非十进制的进制相互转换,所以我们可以用十进制来中转一下。初赛的考场上最不缺的就是时间。

计算机常识

一般来说,oier都不懂计算机。但是这样在外行人看来非常说不过去,尤其是硬件。

冯诺依曼体系:运算器、存储器、输入设备、输出设备。

第一代    1946——1958    电子管
第二代    1959——1964    晶体管
第三代    1965——1970    集成电路
第四代    1971——至今    大规模集成电路,导致微型计算机问世

计算机界常识:

图灵奖,ACM设立于1996年,计算机界最高奖项。
冯诺依曼奖,由IEEE设立(不是我eee。)
中国图灵奖得主:姚期智
图灵测试首次通过:2014年6月8日
香农:创造了信息论,提出了信息传播所需全部硬件系统。
三巨头中,图灵是英国人,冯诺依曼和香农是美国人。

空间单位换算

bit    最小的单位
Byte    1 Byte = 1024 bit
MiB    1 MiB = 1024 byte
KiB    1 KiB = 1024 MiB
GiB    1 GiB = 1024 KiB
TiB    1 TiB = 1024 GiB
PiB    
1 PiB = 1024 TiB

以iB结尾的表示进率为1024。如果以B结尾,则表示进率为1000。必考,注意读题。


ASCII码

数字0是第48号,以此类推。

大写A是第65号,以此类推。

小写a是第97号,以此类推。


机器数与真值

计算机中存在两种整数,无符号整数不考虑正负,有符号的要考虑。

这里有三种码需要大家记住:

原码:一个整数表示为符号位+二进制串。正数的符号位是0,负数的是1。
反码:对于一个正数,反码就是其原码。对于一个负数,反码是其原码除符号位以外全部取反。
补码:对于一个正数,反码就是其原码;对于一个负数,补码是其反码+1。


逻辑表达式的右结合性

如果有多个表达式的组合,要从右往左算哦。

<表达式1>?<表达式2>:<表达式3>?<表达式4>:<表达式5>

先看表达式3的真假,如果真返回表达式4的值,否则返回表达式5的值。

然后看表达式1的真假,如果真返回表达式2,否则返回后面那坨的值。


杂项


计算机使用低级语言,程序员使用高级语言。编译器把高级语言翻译成低级语言。
罕见的视频格式有,avi,mpeg,flv,rmvb,rpm。


排序

选择排序 O(n^2) 不稳定 
冒泡排序 O(n^2) 稳定 
希尔排序 O(n^1.3) 不稳定 
插入排序 O(n^2) 稳定 
快速排序 O(nlogn) 不稳定 
堆排序 O(nlogn) 不稳定
归并排序 O(nlogn) 稳定
基数排序 O(n+k) 稳定
背一下即可。无非考你稳定性之类的。

排序分为基于比较和不基于比较。基于比较的排序顾名思义,选择冒泡插入这些都是。不基于比较的排序则采用了hash等手段。这类排序不但与数值的多少有关,还与数值的大小范围有关。

如何判断一个排序稳不稳定?如果一个元素与另一个元素相等,一开始一个在另一个之前,排完之后这个还是在那一个之前,则这个排序是稳定的,也就是说他不打乱这个序列的内部顺序。

稳定性的意义?在csp可能涉及到的范围内,毫无意义。但是你可能已经冥冥之中感受到有一些特殊的意义了。如果你真的感受到了,一定要去了解一下,不要浪费了你天才的灵感


组合计数


这个我个人觉得没什么好说的,


****二叉树

这个真的太重要了。

一个最常考的点就是二叉树的节点数与层数的关系。

一个n层的满二叉树拥有2^n-1个节点。
这个一定要牢记!牢记!牢记!

然后如何判断他的层数,我们毕竟不太会log。但就像我们不会开根号却依然可以算出一个数平方根的整数部分一样,我们也可以通过同样的手段来计算以2为底的log。
关于二叉树的遍历
必考。

先序遍历就是dfs序,这个没啥好说的。

容易遗忘的是中序和后序。

中序:对于每一棵子树,都最后遍历其右子树。
后序:对于每一棵子树,都最后遍历其根节点。
如果你好奇为什么中序和后序会容易遗忘,因为这都是很傻逼很傻逼的遍历。

然后对于一棵二叉树,我们如果知道他的遍历,可以确定他吗?

先序+中序可以。
中序+后序可以。
先序+后序不行。
可以自己去证一下。当然,此时的你肯定不想证。记住就行。

最后,对于一棵二叉树节点,他的左儿子是他编号的两倍,右儿子是左儿子+1。

补充一点扩展知识:n个节点构成的不同二叉树的数量为。其中卡特兰数在组合计数中讲到。


图片/视频存储与屏幕分辨率


分辨率就是像素个数。像素就是有颜色的小块。

色彩位数是一个像素的大小,通常为16bit,24bit,32bit

生活中,色彩位数可以被看做衡量像素颜色丰满程度的标准。位数越多颜色越丰满。就好比你用三块钱买水彩笔,买来红黄绿。而高级的水彩笔里就会出现很多你甚至没有见过的颜色。

图片所占空间的计算公式
水平方向像素个数×竖直方向像素个数×色彩位数

相当于就是,一个像素有多大,一共有多少个像素,乘起来。

视频是把一些图片连起来。这里就有一个概念,帧数,表示每秒有多少帧,也就是多少张图片。显然,帧数越高,画面越连贯通顺逼真。

视频所占空间的计算公式:
水平方向像素个数×竖直方向像素个数×色彩位数×帧数×时长

也就是说,一张图片有多大,一共有多少张图片,乘起来。

最后记得换算单位。


表达式计算


表达式有前缀、中缀、后缀。这是栈的一大用处。

然而初赛中我们只需要了解即可

前缀表达式,即波兰表达式,形如"op A B"。
中缀表达式,即我们所普遍使用的表达式,形如"A op B"。
后缀表达式,即逆波兰表达式,形如"A B op"。
然后表达式树比较复杂,我不是很想写。不过对于中缀转前后缀,有一种括号法,还算比较浅显。就是先给这个中缀表达式加上括号,然后把符号移到括号前面或者后面,最后删去括号。详情可以自行了解。


OI界的常识


CFF成立于1962年
NOIP开办于1995年,截止2018年已举办24次,19年暂停,20年恢复。


图论


图论中有一些小的点。

n个节点的完全图边数为Cn2;
简单路径:两点之间通过不重复的边相连。
连通图:任意两点可直接或间接到达。
SPFA不属于贪心算法。
再综合二叉树里面讲到的,图论差不多也就这些

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值