一、单选题
1、下列代码中,用到的算法是什么算法,去掉存储的空间,算法本身用到的空间复杂度是多少( )

A 二分法 , O(log2N)
B 二分法 , O(N)
C 折半查找 , O(1)
D 折半查找 , O(Nlog2N)
2、无向图的临接矩阵存储方法中,下列描述正确的是( )。
A 对角矩阵
B 稀疏矩阵
C 非对称矩阵
D 对称矩阵
3、下列代码依次输入10,3,2后,结果是( )。

A 23
B 120
C 16
D 155
4、一个等边五边形,每个顶点上有一个蚂蚁,蚂蚁沿着五边形的边严格匀速行走,方向随机,请问,开始走以后,蚂蚁两两不相碰的概率是多少( )。
A 1/16
B 1/4
C 1/32
D 1/8
5、一根长度为1的小木棒,随机的折成三段,请问这三段能够组成一个三角形的概率是多少?( )。
A 1/3
B 1/4
C 1/8
D 1/2
6、有北京,雄安,天津三个城市,同样两个城市之间来回票价一样。请问火车售票部门需要准备几种车票,几种票价( )。
A 3,3
B 6,6
C 6,3
D 3,6
7、对于如下图的无向图,在用Prim算法以节点F作为起点生成最小树的过程中,哪个选项不是产生最小树的中间状态?( )。

A 
B 
C 
D 
8、对于一棵是完全二叉树的排序二叉树,其平均搜索的时间复杂度为( )。
A O(1)
B O(logn)
C O(n)
D O(n2)
9、关于快速幂,下列说法错误的是( )。
A 使用了倍增思想
B 每一步都把指数分成两半,而相应的底数做平方运算
C 时间复杂度为O(NlogN)
D 可以用快速幂方法计算斐波那契数列的第N项
10、下面实现杨辉三角形的程序中,横线处填写正确的是( )。

A z = triangles(x, y-1) + triangles(x, y)
B z = triangles(x-1, y+1) + triangles(x-1, y-1)
C z = triangles(x-1, y-1) + triangles(x, y)
D z = triangles(x-1, y-1) + triangles(x-1, y)
11、设有编号为1,2,3,4,5的五个球和编号为1,2,3,4,5的盒子,现将这5个球投入5个盒子要求每个盒子放一个球,并且恰好有两个球的号码与盒子号码相同,问有多少种不同的方法( )。
A 20
B 10
C 12
D 24
12、1名老师和4名获奖同学排成一排照相留念,老师不站两端的排法下列所列式子正确的是( )。
A 
B 
C 
D 
13、关于赋权图中,从某一个点出发,寻找最短路径的算法Dijkstra,下列说法中错误的是( )。
A 算法解决了赋权有向图或者无向图的单源最短路径问题
B 算法最终得到一个最短路径树
C 常用于路由算法或者作为其他图算法的一个子模块
D 算法采用的是一种贪心的策略
14、关于图的存储方法中,下列说法错误的是( )。
A 图的存储结构主要分为:邻接矩阵和邻接表
B 图的邻接矩阵存储方式是用两个数组来表示图:一个一维数组存储图中顶点信息,一个二维数组(邻接矩阵)存储图中的边或弧的信息。
C 对于边数相对顶点较少的图,邻接矩阵结构存在对存储空间的极大浪费
D 如果图中边的数目远远大于n的平方称作稀疏图,这是用邻接表表示比用邻接矩阵表示节省空间
15、Dijkstra算法中,定义S集合是已求出最短路径的节点集合,对于下图中的图,Dijkstra算法的中间形成的S集合,错误的是( )。

A S={0(3)}
B S={0(3),2(6)}
C S={0(3),2(6),1(5)}
D S={0(3),2(6),1(8)}
二、判断题
16、线性表可以是空表,树可以是空树,图也可以是空。
A 正确
B 错误
17、在具有n个顶点、e条边的无向图中, 无向图的全部顶点的度的和等于边数的 2 倍。
A 正确
B 错误
18、图的任意几个点,几个边都可以组成这个图的子图。
A 正确
B 错误
19、在具有n个顶点、e条边的有向图中,入度+出度的和是2e。
A 正确
B 错误
20、当一棵排序二叉树退化为单支二叉树后,其平均比较次数是O(N)。
A 正确
B 错误
21、不算数据的存储,插入排序算法的空间复杂度为O(1)。
A 正确
B 错误
22、图的存储方式主要有两种:邻接表和邻接矩阵。
A 正确
B 错误
23、对于边数相对顶点较少的图,使用邻接矩阵来存储更好。
A 正确
B 错误
24、排列问题与顺序有关,组合问题与顺序无关。
A 正确
B 错误
25、用分治法可以优化等比数列的前n项求和的算法。
A 正确
B 错误
三、实操题
26、公倍数问题
问题描述
小 A 写了一个N×M的矩阵A,我们看不到这个矩阵,但我们可以知道,其中第i行第j列的元素Aij是i和j的公倍数(i=1,...,N,j=1,...,M)。现在有K个小朋友,其中第k个小朋友想知道,矩阵A中最多有多少个元素可以是k(k=1,2,...,K)。请你帮助这些小朋友求解。
注意:每位小朋友的答案互不相关,例如,有些位置既可能是x,又可能是y,则它同可以时满足x,y两名小朋友的要求。
方便起见,你只需要输出
即可,其中ansk表示第k名小朋友感兴趣的答案。
输入描述
第一行三个正整数N,M,K。
输出描述
输出一行,即
。
请注意,这个数可能很大,使用 C++ 语言的选手请酌情使用 long long 等数据类型存储答案。
特别提醒
在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。
样例输入 1
2 5 2
样例输出 1
9
样例解释 1
只有A1,1可以是1,其余都不行。
A1,1,A1,2,A2,1,A2,2都可以是2,而其余不行。
因此答案是1×1+2×4=9。
样例输入 2
100 100 100
样例输出 2
185233
数据规模
对于30的测试点,保证N,M,K≤10;
对于60的测试点,保证N,M,K≤500;
对于100的测试点,保证N,M<105,K<106。
参考答案:```cpp#include
27、接竹竿
题面描述
小杨同学想用卡牌玩一种叫做“接竹竿”的游戏。
游戏规则是:每张牌上有一个点数v,将给定的牌依次放入一列牌的末端。若放入之前这列牌中已有与这张牌点数相同的牌,则小杨同学会将这张牌和点数相同的牌之间的所有牌全部取出队列(包括这两张牌本身)。
小杨同学现在有一个长度为n的卡牌序列A,其中每张牌的点数为Ai(1≤i≤n)。小杨同学有q次询问。第i次(1≤i≤q)询问时,小杨同学会给出li,ri,小杨同学想知道如果用下标在[li,ri]的所有卡牌按照下标顺序玩“接竹竿”的游戏,最后队列中剩余的牌数。
输入格式
第一行包含一个正整数T,表示测试数据组数。
对于每组测试数据,第一行包含一个正整数n,表示卡牌序列A的长度。
第二行包含n个正整数A1,A2,...,An,表示卡牌的点数A。
第三行包含一个正整数q,表示询问次数。
接下来q行,每行两个正整数li,ri,表示一组询问。
输出格式
对于每组数据,输出q行。第i行(1≤i≤q)输出一个非负整数,表示第i次询问的答案。
样例输入
1 6 1 2 2 3 1 3 4 1 3 1 6 1 5 5 6
样例输出
1 1 0 2
样例解释
对于第一次询问,小杨同学会按照1,2,2的顺序放置卡牌,在放置最后一张卡牌时,两张点数为2的卡牌会被收走,因此最后队列中只剩余一张点数为1的卡牌。
对于第二次询问,队列变化情况为:{}-->{1}-->{1,2}-->{1,2,2}-->{1}-->{1,3}-->{1,3,1}-->{}-->{3}。因此最后队列中只剩余一张点数为3的卡牌。
数据范围

对于全部数据,保证有1≤T≤5,1≤n≤1.5×104,1≤q≤1.5×104,1≤Ai≤13 。
参考答案:对于每个询问,我们需要模拟接竹竿游戏的过程,计算最后队列中剩余的牌数。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!




