#SC2024S104. 第四套
第四套
第四套
单项选择题(共 题,每题 分,共计 分,每题仅有一个正确选项)
- 对于图,以下何种说法是正确的?{{ select(1) }}
- 2 - 可染色的图不是二分图
- 在有向图中,一个点只能属于一个强连通分量
- 无向欧拉图可能存在度数为奇数的点
- 边双连通分量删掉一个点后一定是点双连通分量
- 在 中选取 个不重复的数字能组成几个不同的偶数,不允许前导 ?{{ select(2) }}
- 70
- 1680
- 210
- 630
- 对于数据结构,一下何种说法是正确的?{{ select(3) }}
- ST 表的单次区间查询复杂度为 O(log n)
- 完全二叉树的某个节点可能只有右儿子
- 二叉树的前序遍历可以唯一的确定二叉树的形态
- c++ 内置的优先队列不是使用红黑树实现的
- 定义
那么代码 int res = dfs(n);
的复杂度为{{ select(4) }}
- 以下数中何数最大{{ select(5) }}
- 投掷一枚六面骰子,若每一面都是等概率,那么至少几次投掷才能保证至少有一次出现点数为 的概率大于 ?{{ select(6) }}
- 字符串序列
aba
在序列abababacabab
中出现了几次?{{ select(7) }}
- 对于最短路算法,以下正确的是?{{ select(8) }}
- Dijkstra 算法是一种求解任意图的单源最短路的算法
- Floyd 算法的复杂度为
- Bellman–Ford 算法可以判断负环
- Dijkstra 算法暴力实现的复杂度为
- 树上任意两节点之间最长的简单路径即为树的直径。若树有多条直径,则下面哪种树的直径中点一定重合{{ select(9) }}
- 满二叉树
- 边权绝对值为 的树
- 深度为 的树
- 边权为正的树
- 从 到 中选择 个数形成一个序列,问其中有多少个单调递增的序列{{ select(10) }}
- 罐中放有 个白球和 个黑球,每次从罐中随机抽取一个球,并连同 个同色球一起放入罐中。则在第 次取球时取出白球的概率为 {{ select(11) }}
- 个节点的二叉树最少有多少层 {{ select(12) }}
- 树的前序遍历为
ABDEHCFGI
,中序遍历为DBHEAFCGI
,则树的后序遍历为 {{ select(13) }}
- DHEBFIGCA
- DHEBFIGAC
- DHEBIFGCA
- DHEBIFGAC
- 以比较为基本运算,只考虑数组元素间的比较,在 个数的数组中找次大的数,在最坏情况下至少要做()次运算。{{ select(14) }}
- 现有一个地址区间为 到 的哈希表,对于出现冲突情况,会往后找第一个空的地址存储(到 冲突了就从 开始往后),现在要依次存储 ,哈希函数为 。请问 存储在哈希表哪个地址中?{{ select(15) }}
阅读程序(程序输入不超过数组或字符串定义的范围;判断题正确填 √,错误填 ×,除特殊说明外,判断题 分,选择题 分,共计 分)
#include <iostream>
using namespace std;
const int mod = 998244353;
int n;
int num[1002][1002];
void init() {
num[0][0] = 1;
for(int i = 0; i <= 1000; i++) {
for(int j = 0; j <= i; j++) {
num[i][j+1] = (num[i][j+1] + num[i][j]) % mod;
num[i+1][j] = (num[i+1][j] + num[i][j]) % mod;
}
}
}
int sol1(int x) {
return num[x][x];
}
int sol2(int x) {
int ans = 1;
for(int i = 2; i <= x; i++) {
ans = 1ll * ans * (4*i-2) % mod / (i+1) % mod;
}
return ans;
}
int main() {
init();
cin >> n;
cout << sol1(n) << endl;
cout << sol2(n) << endl;
}
判断题
- 当输入为
5
时,输出的第一行为 。{{ select(16) }}
- √
- ×
- 当输入为
4
时,输出的第二行为 。{{ select(17) }}
- √
- ×
- 无论 为何值,两行的输出一定相等。{{ select(18) }}
- √
- ×
- 当 为 时,输出的第二行一定小于 。{{ select(19) }}
- √
- ×
单选题
sol1(n)
的时间复杂度为。{{ select(20) }}
sol2(n)
的时间复杂度为。{{ select(21) }}
, 保证图连通且无自环和重边
判断题
- 将第 行删除,输出不变。{{ select(22) }}
- √
- ×
- 存在一种输入,使得输出为负数。{{ select(23) }}
- √
- ×
- 当输入为
3 3 1 2 2 3 3 1
时,输出为1
。{{ select(24) }}
- √
- ×
单选题
- 时间复杂度为。{{ select(25) }}
- 当 时,输出最大是。{{ select(26) }}
- 当 时,输出最大是。{{ select(27) }}
, 图连通且无重边和自环
判断题
- 当输入为
2 1 1 2
时,输出为1 1
。{{ select(28) }}
- √
- ×
- 将第 行改为
dis[1] = -1
,输出一定不变。{{ select(29) }}
- √
- ×
- 将第 行改为
dis[v] <= dis[u] + 1
输出除了最后一个数,其余一定变大。{{ select(30) }}
- √
- ×
单选题
- (2 分)当输入为
4 4 1 2 1 3 2 4 3 4
时,输出为。{{ select(31) }}
1 1 1 2
1 1 2 2
1 2 2 1
1 1 1 1
- 时间复杂度为。{{ select(32) }}
- 当输入中 时,输出应满足。{{ select(33) }}
- 最大值可能大于 。
- 至少有 个数大于 。
- 输出可能为
1 2 4 4 4 ...
。 - 至多有 个数大于 。
完善程序(单选题,每题 分,共计 分)
给定 个点 条边的无向简单图,顶点编号从 到 。定义奇/偶环为包含奇/偶数条边的简单环。
分别回答图中是否有奇/偶环。
程序通过找双连通分量的方式完成,试补全程序。
- (1)处应填 {{ select(34) }}
dep[v] == 0
dep[v] != 0
dep[u] == dep[v]
dep[u] < dep[v]
- (2)处应填 {{ select(35) }}
dep[u] & 1 == dep[v] & 1
((dep[u] + dep[v]) & 1) == 0
(dep[u] + dep[v]) & 1
dep[u] & 1 != dep[v] & 1
- (3)处应填 {{ select(36) }}
--st[up[u]]; ++st[v];
++st[u]; --st[up[v]];
--st[u]; ++st[up[v]];
++st[up[u]]; --st[v];
- (4)处应填 {{ select(37) }}
st[u] >= 2
st[u] >= 1
st[u] <= 2
st[u] <= 1
- (5)处应填 {{ select(38) }}
to[u].insert(v); to[v].insert(u);
to[u].push(v); to[v].push(u);
to[u].add(v); to[v].add(u);
to[u].push_back(v); to[v].push_back(u);
斐波那契是满足递推式 , 的序列
现给定一个长度为 的数列 ,你需要将每一个数分成若干个部分
问是否存在一种对部分进行重排后形成的序列满足
- 同一个数分成的部分在序列中不相邻
- 序列第 项的值为
已知对于斐波那契数列有
-
-
,
- (1)应填 {{ select(39) }}
fib[i] = fib[i-1] + fib[i-2]
fib[i] = fib[i-1] - fib[i-2]
fib[i+1] = fib[i] + fib[i-1]
fib[i+1] = fib[i] - fib[i-1]
- (2)应填 {{ select(40) }}
fib[i+2]
fib[i+1]-1
fib[i+2]-1
fib[i+1]
- (3)应填 {{ select(41) }}
(int i=x; i>=0; i--)
(int i=0; i<=x; i++)
(int i=x; i>0; i--)
(int i=0; i<x; i++)
- (4)应填 {{ select(42) }}
(u.first <= fib[i])
(u.first < fib[i])
(u.first > fib[i])
(u.first >= fib[i])
- (5)应填 {{ select(43) }}
last_used = u.first;
last_used = u.second;
last_used = -1;
last_used = i;