排序算法
前缀/后缀表达式
二进制补码、反码
最短路
图片/音频/视频文件格式
前序/中序/后序遍历
-
以比较作为基本运算,在 N 个数中找最小数的最少运算次数为( )。
A. NNN
B. N−1N-1N−1
C. N2N^2N2
D. logNlogNlogN
正确答案: B -
设 A 和 B 是两个长为 n 的有序数组,现在需要将 A 和 B 合并成一个排好序的 数组,请问任何以元素比较作为基本运算的归并算法最坏情况下至少要做 ( )次比较。
A. n2n^2n2
B. nlognnlognnlogn
C. 2n2n2n
D. 2n−12n-12n−1
正确答案:D -
某计算机的 CPU 和内存之间的地址总线宽度是 32 位(bit),这台计算机最多可以使用( )的内存。
正确答案: 4GB
解析:
地址总线宽度为32位,一次可以发送的一个数据是32位的,则寻址的单元最大就是32位数据的最大值,就是2的32次方。
232B=222KB=212MB=22GB=4GB2^{32}B=2^{22}KB=2^{12}MB=2^2GB=4GB232B=222KB=212MB=22GB=4GB -
有 7 个一模一样的苹果,放到 3 个一样的盘子中,一共有( )种放法。
正确答案:8 -
将 7 个名额分给 4 个不同的班级,允许有的班级没有名额,有( )种不 同的分配方案。
正确答案:120
解析:
排列组合 "N个球放入M个盒子"问题 总结
球,盒子都可以分成不能区分和能区分,还能分成是否能有空箱子,所以一共是8种情况。
1.球同,盒不同,无空箱
Cn−1m−1C_{n-1}^{m-1}Cn−1m−1,n>=m
0,n<m
使用插板法:n个球中间有n-1个间隙,现在要分成m个盒子,而且不能有空箱子,所以只要在n-1个间隙选出m-1个间隙即可
2.球同,盒不同,允许空箱
Cn+m−1m−1C_{n+m-1}^{m-1}Cn+m−1m−1
我们在第1类情况下继续讨论,我们可以先假设m个盒子里都放好了1个球,所以说白了就是,现在有m+n个相同的球,要放入m个不同的箱子,没有空箱。也就是第1种情况
3.球不同,盒相同,无空箱
第二类斯特林数dp[n][m]dp[n][m]dp[n][m]
dp[n][m]=m×dp[n−1][m]+dp[n−1][m−1]dp[n][m]=m \times dp[n-1][m]+dp[n-1][m-1]dp[n][m]=m×dp[n−1][m]+dp[n−1][m−1],1<=m<n
dp[k][k]=1dp[k][k]=1dp[k][k]=1,k>=0
dp[k][0]=0dp[k][0]=0dp[k][0]=0,k>=1
0,n<m
这种情况就是第二类斯特林数,我们来理解一下这个转移方程。
对于第n个球,如果前面的n-1个球已经放在了m个箱子里,那么现在第n个球放在哪个箱子都是可以的,所以m×dp[n−1][m]m \times dp[n-1][m]m×dp[n−1][m];
如果前n-1个球已经放在了m-1个箱子里,那么现在第n个球必须要新开一个箱子来存放,所以dp[n−1][m−1]dp[n-1][m-1]dp[n−1][m−1]
其他的都没法转移过来
4.球不同,盒相同,允许空箱
答案是∑i=0mdp[n][i]\sum_{i=0}^mdp[n][i]∑i=0mdp[n][i]
dp[n][m]dp[n][m]dp[n][m]为情况3的第二类斯特林数
这种情况就是在第3种情况的前提下,去枚举使用的箱子的个数
5.球不同,盒不同,无空箱
dp[n][m]×fac[m]dp[n][m] \times fac[m]dp[n][m]×fac[m]
dp[n][m]为情况3的第二类斯特林数,fac[m]为m的阶乘
因为球是不同的,所以dp[n][m]得到的盒子相同的情况,只要再给盒子定义顺序,就等于现在的答案了
6.球不同,盒不同,允许空箱
mnm^nmn
每个球都有m种选择,所以就等于mnm^nmn
7.球同,盒同,允许空箱
dp[n][m]=dp[n][m−1]+dp[n−m][m]dp[n][m]=dp[n][m-1]+dp[n-m][m]dp[n][m]=dp[n][m−1]+dp[n−m][m], n>=m
dp[n][m]=dp[n][m−1]dp[n][m]=dp[n][m-1]dp[n][m]=dp[n][m−1], n<m
边界dp[k][1]=1,dp[1][k]=1,dp[0][k]=1dp[k][1]=1,dp[1][k]=1,dp[0][k]=1dp[k][1]=1,dp[1][k]=1,dp[0][k]=1
现在有n个球,和m个箱子,我可以选择在所有箱子里面都放上1个球,也可以不选择这个操作。
如果选择了这个操作,那么就从dp[n−m][m]dp[n-m][m]dp[n−m][m]转移过来
如果没有选择这个操作,那么就从dp[n][m−1]dp[n][m-1]dp[n][m−1]转移过来
8.球同,盒同,无空箱
dp[n−m][m]dp[n-m][m]dp[n−m][m], dp[][]dp[][]dp[][]同第7种情况,n>=m
0, n<m
因为要求无空箱,我们先在每个箱子里面放1个球,然后还剩下n-m个球了,再根据情况7答案就出来了 -
由四个不同的点构成的简单无向连通图的个数是( )。
正确答案:38
解析:
最多可加n∗(n−1)2\frac{n*(n-1)}{2}2n∗(n−1) 条边,最少可加n−1n-1n−1条边
个数即为:C63−4+C64+C65+C66=38C_{6}^{3}-4+C_{6}^{4}+C_{6}^{5}+C_{6}^{6}=38C63−4+C64+C65+C66=38
为什么减4呢?因为在6条边中选3条边会有4种不连通的情况,
即3条边连了3个点构成一个环,剩下的一个点被孤立,显然此种情况不能成立 -
以下属于无线通信技术的有( )。
A. 蓝牙
B. WiFi
C. GPRS
D. 以太网
正确答案:ABC -
可以将单个计算机接入到计算机网络中的网络接入通讯设备有( )。
A. 网卡
B. 光驱
C. 鼠标
D. 显卡
正确答案:A
解析:
网卡是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件。
光驱是电脑用来读写光碟内容的机器。
显卡:将电脑的数字信息转成模拟信号让显示器显示出来。 -
一个 1×8 的方格图形(不可旋转)用黑、白两种颜色填涂每个方格。如果每个方格只能填涂一种颜色,且不允许两个黑格相邻,共有_________种填涂方案。
正确答案:55
解析:
法一:
设DP状态为F[i][0/1]F[i][0/1]F[i][0/1] 分别表示取到第 i 个格,当前格是白/黑的方案数,
最后答案为F[n][0]+F[n][1]F[n][0] + F[n][1]F[n][0]+F[n][1],
转移 F[i][0]=F[i−1][0]+F[i−1][1],F[i][1]=F[i−1][0]F[i][0] = F[i-1][0] + F[i-1][1],F[i][1] = F[i-1][0]F[i][0]=F[i−1][0]+F[i−1][1],F[i][1]=F[i−1][0]
法二:
设DP状态为F[i]F[i]F[i] 分别表示取到第 i 个格的方案数,
若当前格是白色的,前一格颜色任意,F[n]=F[n−1]F[n]=F[n-1]F[n]=F[n−1];
若当前格是黑色的,前一格是白色的,F[n]=F[n−2]F[n]=F[n-2]F[n]=F[n−2];
所以,F[n]=F[n−1]+F[n−2]F[n]=F[n-1]+F[n-2]F[n]=F[n−1]+F[n−2]。这是一个斐波那契数列。 -
从(2020)年开始,NOIP 竞赛将不再支持 Pascal 语言。
补充:
到2020年,除NOIP以外的赛事不再支持Pascal,c
到2022年,NOIP也不再支持Pascal,NOI赛事仅支持c++ -
若 f[0] = 0, f[1] = 1, f[n + 1] = (f[n] + f[n - 1]) / 2,则随着 i 的增大,f[i]将接近于( )。
A. 1/2
B. 2/3
C. (√5 − 1)/2
D. 1
正确答案: B
解析:
令g[n]=f[n]−f[n−1],n=1,2,...令 g[n] = f[n] - f[n-1], n=1,2,...令g[n]=f[n]−f[n−1],n=1,2,...
f[n+1]×2=f[n]+f[n−1]f[n+1]\times2=f[n]+f[n-1]f[n+1]×2=f[n]+f[n−1]
f[n+1]−f[n]=f[n−1]−f[n+1]f[n+1]-f[n]=f[n-1]-f[n+1]f[n+1]−f[n]=f[n−1]−f[n+1]
f[n+1]−f[n]=f[n−1]−(f[n]+f[n−1])/2f[n+1]-f[n]=f[n-1]-(f[n]+f[n-1])/2f[n+1]−f[n]=f[n−1]−(f[n]+f[n−1])/2
f[n+1]−f[n]=−(f[n]−f[n−1])/2f[n+1] - f[n] = -(f[n] - f[n-1])/2f[n+1]−f[n]=−(f[n]−f[n−1])/2
即g[n+1]=−g[n]/2即 g[n+1] = -g[n]/2即g[n+1]=−g[n]/2
g[1]=1g[1] = 1g[1]=1
故g[n]=(−2)1−n故 g[n] = (-2)^{1-n}故g[n]=(−2)1−n
g[n]+g[n−1]+...+g[1]=f[n]−f[0]=(−2)1−n+...+1=2/3×(1−(−2)−n)g[n] + g[n-1] + ... + g[1] = f[n] - f[0] = (-2)^{1-n} + ... + 1 = 2/3 \times (1 - (-2)^{-n})g[n]+g[n−1]+...+g[1]=f[n]−f[0]=(−2)1−n+...+1=2/3×(1−(−2)−n)
f[n]→2/3f[n] \rightarrow 2/3f[n]→2/3 -
小明要去南美洲旅游,一共乘坐三趟航班才能到达目的地,其中第 1 个航班 准点的概率是 0.9,第 2 个航班准点的概率为 0.8, 第 3 个航班准点的概率为 0.9。如果存在第 i 个(i=1,2)航班晚点,第 i+1 个航班准点,则小明将赶不 上第 i+1 个航班,旅行失败;除了这种情况,其他情况下旅行都能成功。请 问小明此次旅行成功的概率是( )。
A. 0.5
B. 0.648
C. 0.72
D. 0.74
正确答案:D
解析:
第一班晚点第二班准点的概率为0.1×0.8=0.080.1\times0.8=0.080.1×0.8=0.08,不必考虑第三班;第二班晚点第三班准点的概率为0.2×0.9=0.180.2\times0.9=0.180.2×0.9=0.18,不必考虑第一班,加起来为不能成功的概率,即0.08+0.18=0.260.08+0.18=0.260.08+0.18=0.26,用1减去这个概率即为答案,即1−0.26=0.741-0.26=0.741−0.26=0.74 -
欢乐喷球:儿童游乐场有个游戏叫“欢乐喷球”,正方形场地中心能不断喷出彩色乒乓球,以场地中心为圆心还有一 个圆形轨道,轨道上有一列小火车在匀速运动,火车有六节车厢。
假设乒乓球等概率落到正方形场地的每个地点,包括火车车厢。小朋友玩这个游戏时,只能坐在同一个火车车厢里,可以在自己的车厢里捡落在该车厢内的所有乒乓球,每个人每次游戏有三分钟时间,则一个小朋友独自玩一次游戏期望可以得到( )个乒乓球。假设乒乓球喷出的速度为 2 个/秒,每节车厢的面积是整个场地面积的 1/20。
A. 60
B. 108
C. 18
D. 20
正确答案:C
解析:
一共有2 * 60 * 3=360个球
360 / 20=18(个) -
以下是面向对象的高级语言的有( )。
A. 汇编语言
B. C++
C. Fortran
D. Java
正确答案:BD -
下列属于解释执行的程序设计语言是
A. C
B. C++
C. Pascal
D. Python
正确答案:D -
以下和计算机领域密切相关的奖项有( )。
A. 奥斯卡奖
B. 图灵奖
C. 诺贝尔奖
D. 王选奖
正确答案:BD -
中国计算机学会于( )年创办全国青少年计算机程序设计竞赛。
A. 1983
B. 1984
C. 1985
D. 1986
正确答案: B -
如右图所示,共有 13 个格子。对任何一个格子进行一 次操作,会使得它自己以及与它上下左右相邻的格子中 的数字改变(由 1 变 0,或由 0 变 1)。现在要使得所 有的格子中的数字都变为 0,至少需要_________次操作。
正确答案:3 -
如下图所示,A 到 B 是连通的。假设删除一条细的边的代价是 1,删除一条粗的边的代价是 2,要让 A、B 不连通,最小代价是(________)(2 分),最小代价的不同方案数是(_______)(3 分)。(只要有一条删除的边不同,就 是不同的方案)
正确答案:4 9 -
在一条长度为 1 的线段上随机取两个点,则以这两个点为端点的线段的期望长度是( )。
A. 1 / 2
B. 1 / 3
C. 2 / 3
D. 3 / 5
正确答案: B
解析:
我们先考虑固定一个端点的情况,如果左端点固定在了最左边那么答案为1/2,既然左端点更大,那么肯定答案会小于1/2,因此只能是B
正解:
法一:
从0~L任选一点x,0到x的线段长度期望为
∫0LxL=(12L2−1202)/L=12L\frac{\int_0^Lx}{L}=(\frac{1}{2}L^2-\frac{1}{2}0^2)/L=\frac{1}{2}LL∫0Lx=(21L2−2102)/L=21L
于是从0~1任选一点x,然后再选一点y与x的构成线段的期望长度为
[∫01(1−x1×1−x2+x1×x2)]/1[\int_0^1(\frac{1−x}{1}\times\frac{1−x}{2}+\frac{x}{1}\times\frac{x}{2})]/1[∫01(11−x×21−x+1x×2x)]/1
=∫01(x2−x+12)=\int_0^1(x^2-x+\frac{1}{2})=∫01(x2−x+21)
=(13×13−12×12+12×1)−(0)=(\frac{1}{3}\times1^3-\frac{1}{2}\times1^2+\frac{1}{2}\times1)−(0)=(31×13−21×12+21×1)−(0)
=13=\frac{1}{3}=31
法二
(ps.这篇博客是有点问题的,ans=(ans/2+ans/2+1/2+1/2)/2应该是除以4) -
关于Catalan 数 Cn = (2n)! / (n + 1)! / n!,下列说法中错误的是( )。
A. Cn 表示有n + 1 个结点的不同形态的二叉树的个数。
B. Cn 表示含n 对括号的合法括号序列的个数。
C. Cn 表示长度为n 的入栈序列对应的合法出栈序列个数。
D. Cn 表示通过连接顶点而将n + 2 边的凸多边形分成三角形的方法个数。
正确答案: A
解析:卡特兰数详解 -
假设一台抽奖机中有红、蓝两色的球,任意时刻按下抽奖按钮,都会等概率获得红球或蓝球之一。有足够多的人每人都用这台抽奖机抽奖,假如他们的策略均为:抽中蓝球则继续抽球,抽中红球则停止。最后每个人都把自己获得的所有球放到一个大箱子里,最终大箱子里的红球与蓝球的比例接近于( )。
A. 1 : 2
B. 2 : 1
C. 1 : 3
D. 1 : 1
正确答案: D
解析:
红球每个人都会抽一个。
蓝球设每个人抽S个:
n趋于正无穷。
S=021+122+223+...+n−12nS=\frac {0}{2^1}+\frac{1}{2^2}+\frac{2}{2^3}+...+\frac{n-1}{2^n}S=210+221+232+...+2nn−1
S2=022+123+224+...+n−22n+n−12n+1\frac{S}{2}=\frac {0}{2^2}+\frac{1}{2^3}+\frac{2}{2^4}+...+\frac{n-2}{2^n}+\frac{n-1}{2^{n+1}}2S=220+231+242+...+2nn−2+2n+1n−1
相减得到:
S2=122+123+124+...+12n−n−12n+1\frac{S}{2}=\frac{1}{2^2}+\frac{1}{2^3}+\frac{1}{2^4}+...+\frac{1}{2^n}-\frac{n-1}{2^{n+1}}2S=221+231+241+...+2n1−2n+1n−1
S=1S=1S=1
所以比例是1:1。 -
为了统计一个非负整数的二进制形式中 1 的个数,代码如下:
int CountBit(int x)
{
int ret = 0;
while (x)
{
ret++;
___________;
}
return ret;
}
则空格内要填入的语句是( )。
A. x >>= 1
B. x &= x - 1
C. x |= x >> 1
D. x <<= 1
正确答案: B
解析:
每执行一次x = x&(x-1),会将x用二进制表示时最右边的一个1变为0 -
NOIP 初赛中,选手可以带入考场的有( )。
A. 笔
B. 橡皮
C. 手机(关机)
D. 草稿纸
正确答案: AB -
2-3 树是一种特殊的树,它满足两个条件:
每个内部结点有两个或三个子结点;
所有的叶结点到根的路径长度相同。
如果一棵2-3 树有10 个叶结点,那么它可能有( )个非叶结点。
A. 5
B. 6
C. 7
D. 8
正确答案: CD
解析:
把10个叶结点分成几堆,每堆有2或3个点,同一个堆的点有相同的父亲
10=2+2+2+2+2=2+2+3+3
对应5+2+1=8或4+2+1=7个非叶结点 -
下列关于图灵奖的说法中,正确的有( )。
A. 图灵奖是由电气和电子工程师协会(IEEE)设立的。
B. 目前获得该奖项的华人学者只有姚期智教授一人。
C. 其名称取自计算机科学的先驱、英国科学家艾伦·麦席森·图灵。
D. 它是计算机界最负盛名、最崇高的一个奖项,有“计算机界的诺贝尔奖”之称。
正确答案: BCD -
方程 a*b = (a or b) * (a and b),在 a, b 都取 [0, 31] 中的整数时,共有_____组解。(*表示乘法;or 表示按位或运算;and 表示按位与运算)
正确答案: 454
解析:
蒙一下:当 (a or b)=max(a,b) ,(a and b)=min(a,b) 时,等式成立,此时二进制下一个数是另一个数的子集
ans=2×(∑i=05C5i×25−i)−25=454ans=2\times(\sum_{i=0}^5 C_5^i\times2^{5-i})-2^5=454ans=2×(∑i=05C5i×25−i)−25=454
即枚举小的数有多少个1,算出方案,再减去重复的即两个数相同的情况。 -
设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是()
A. x= (x * 100+0. 5)/100. 0;
B. x=(int) (x * 100+0. 5)/100. 0;
C. x=(x/100+0. 5)* 100. 0;
D. x=x*100+0. 5/100. 0;
正确答案: B
解析:运算符优先级 -
若某算法的计算时间表示为递推关系式:
T(N) = 2T(N / 2) + N log N
T(1) = 1
则该算法的时间复杂度为( )。
A. O(N)O(N)O(N)
B. O(NlogN)O(N \log N)O(NlogN)
C. O(Nlog2N)O(N \log^2 N)O(Nlog2N)
D. O(N2)O(N^2)O(N2)
正确答案: C
解析:T(N)=2T(N/2)+NlogNT(N)=2T(N/2)+NlogNT(N)=2T(N/2)+NlogN
T(N)N=T(N/2)N/2+logN\frac{T(N)}{N}=\frac{T(N/2)}{N/2}+logNNT(N)=N/2T(N/2)+logN
时间复杂度为O(Nlog2N)O(Nlog^2N)O(Nlog2N) -
在 Linux 系统终端中,用于列出当前目录下所含的文件和子目录的命令为( )。
A. ls
B. cd
C. cp
D. all
正确答案:A