首页 > 系统相关 >信息学奥赛初赛天天练-89-CSP-S2023基础题1-linux常用命令、完全平方数、稀疏图、队列、散列表、二叉树、哈夫曼树

信息学奥赛初赛天天练-89-CSP-S2023基础题1-linux常用命令、完全平方数、稀疏图、队列、散列表、二叉树、哈夫曼树

时间:2024-09-14 17:23:51浏览次数:11  
标签:编码 平方 哈夫曼 初赛 关键字 二叉树 圆环

PDF文档公众号回复关键字:20240914

2023 CSP-S 选择题

单项选择题(共15题,每题2分,共计30分:每题有且仅有一个正确选项)

1 在 Linux 系统终端中,以下哪个命令用于创建一个新的目录 ? ( )

A newdir
B mkdir
C create
D mkfold

2 从0,1,2,3,4 中选取 4 个数字,能组成( )个不同四位数(注:最小的四位数是 1000 最大的四位数是 9999)

A 96
B 18
C 120
D 84

3 假设 n 是图的顶点的个数,m 是图的边的个数,为求解某一问题有下面四种不同时间复杂度的算法。对于 m=Θ(n) 的稀疏图而言,下面的四个选项,哪一项的渐近时间复杂度最小( )

A O(m* sqrt(logn) * loglogn)
B O(n^2 + m)
C O(n^2/logm + m*logn)
D O(m + nlogn)

4 假设有 n根柱子,需要按照以下规则依次放置编号为 1,2,3,⋯的圆环:每根柱子的底 部固定,顶部可以放入圆环;每次从柱子顶部放入圆环时,需要保证任何两个相邻圆环的编号之和是一个完全平方数。请计算当有 4根柱子时,最多可以放置( )个圆环

A 7
B 9
C 11
D 5

5 以下对数据结构的表述不恰当的一项是( )

A 队列是一种先进先出(FIFO)的线性结构
B 哈夫曼树的构造过程主要是为了实现图的深度优先搜索
C 散列表是一种通过散列函数将关键字映射到存储位置的数据结构
D 二叉树是一种每个结点最多有两个子结点的树结构

2 相关知识点

1) 常用linux命令

ls:列出目录中的文件和子目录。
cd:切换当前工作目录。
pwd:显示当前工作目录的路径。
cp:复制文件或目录。
mv:移动文件或目录。
rm:删除文件或目录。
mkdir:创建新目录。
rmdir:删除空目录。
touch:创建空文件或更改文件的时间戳。
cat:查看文件内容或将多个文件合并为一个文件

2) 完全平方数

完全平方数是指一个整数可以表示为另一个整数的平方的形式

1(1 * 1)
4(2 * 2)
9(3 * 3)
16(4 * 4)
25(5 * 5)
36(6 * 6)
49(7 * 7)
64(8 * 8)
81(9 * 9)

3) 稀疏图

稀疏图(Sparse Graph)是指边数相对较少的图

在稀疏图中,顶点数为n,边数为m,它们之间的一般关系是m远小于n的平方 m<nlogn

4) 队列

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(head)进行删除操作,而在表的后端(tail)进行插入操作

队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头

队列可以理解成我们平时的排队,先进入的先出去

5) 散列表

散列表,英文名称为Hash Table,又称哈希表、杂凑表等

散列表是根据关键字直接访问的数据结构。散列表通过散列函数将关键字映射到存储地址,建立了关键字和存储地址之间的一种直接映射关系

例如:关键字集key = (17, 24, 48, 25),散列函数H(key) = key % 5,散列函数将关键字映射到存储地址下标,将关键字存储到散列表的对应位置

6) 二叉树

每个结点至多拥有两棵子树(即二叉树中不存在度大于2的结点),并且,二叉树的子树有左右之分,其次序不能任意颠倒,例如下面是一棵二叉树

7) 哈夫曼树

1 选剩下的两棵根权值最小的树合并成一棵新树

2 新树的根权值等于两棵合并前树的根权值和

3 重复1和2

哈夫曼编码

哈夫曼树的左右孩子进行编码称为哈夫曼编码,通常左边为0,右边为1

只对叶子节点进行编码/解码,编码唯一

哈夫曼编码是前缀编码,任何一个字符的编码都不是另一个字符编码的前缀(只有叶子节点编码)

哈夫曼编码左边为0,右边为1是通常规定,也可以左边为1右边为0,但确定后编码是唯一的

如果下图为字母a,b,c,d,e的编码,字母旁边对应数字为其出现的频率

3 思路分析

1 在 Linux 系统终端中,以下哪个命令用于创建一个新的目录 ? ( B )

A newdir
B mkdir
C create
D mkfold

分析

根据常用linux命令可知,创建一个目录为mkdir

2 从0,1,2,3,4 中选取 4 个数字,能组成( A )个不同四位数(注:最小的四位数是 1000 最大的四位数是 9999)

A 96
B 18
C 120
D 84

分析

由于0不能做首位,所以不能直接使用排列
分别把这5个数字放入到4位数的对应位
千位 可以是 1 2 3 4 有4种选择
百位 可以是包括0的5个数字任意一个,千位已经使用了1个,所以有4种选择
十位 同百位,有3种选择
个位 同十位,有2种选择
根据乘法原理
4 * 4 * 3 * 2 = 96 种

3 假设 n 是图的顶点的个数,m 是图的边的个数,为求解某一问题有下面四种不同时间复杂度的算法。对于 m=Θ(n) 的稀疏图而言,下面的四个选项,哪一项的渐近时间复杂度最小( )

A O(m* sqrt(logn) * loglogn)
B O(n^2 + m)
C O(n^2/logm + m*logn)
D O(m + nlogn)

分析

根据稀疏图的定义可知,顶点远数远大于边的图
假设n=16 ,m=2时,代入4个选项
A 2 * sqrt(log16) * loglog16=2 * sqrt(4) * log4 =2 * 2 * 2=8
B 16^2+2=256+2=258
C 16^2/1 + 2 * log16=256 + 2 * 4 = 264
D 2 + 16 * log16 = 2+16*4=66
从上述计算结果看A最小,所以选 A

4 假设有 n根柱子,需要按照以下规则依次放置编号为 1,2,3,⋯的圆环:每根柱子的底 部固定,顶部可以放入圆环;每次从柱子顶部放入圆环时,需要保证任何两个相邻圆环的编号之和是一个完全平方数。请计算当有 4根柱子时,最多可以放置( C )个圆环

A 7
B 9
C 11
D 5

分析

根据题目规则每个相邻圆环的编号之和是一个完全平方数,列举几个可能的完全平方数
4,9,16,25,36
尝试依次放入圆环,可知如下情况,可以放置最多
1和8,2和7,3和6,4和5都可以组成完全平方数
再继续放
7和9,6和10,5和11都可以组成完成平方数
无法继续再放入12使得和最上面的数组成完全平方数
因此最多可以放置11个圆环

5 以下对数据结构的表述不恰当的一项是( B )

A 队列是一种先进先出(FIFO)的线性结构
B 哈夫曼树的构造过程主要是为了实现图的深度优先搜索
C 散列表是一种通过散列函数将关键字映射到存储位置的数据结构
D 二叉树是一种每个结点最多有两个子结点的树结构

分析

A 队列的特点就是先进先出,即最先进入队列的元素最先被取出,正确
B 哈夫曼树(Huffman Tree)是一种特殊的二叉树,主要用于数据压缩。它的构造过程是根据字符出现的频率来构建一棵最优二叉树,以便在数据压缩过程中实现最优编码。这与图的深度优先搜索无关,因此是错误的
C 散列表(Hash Table)是一种通过散列函数将关键字映射到存储位置的数据结构,它可以实现快速的查找、插入和删除操作,正确
D 二叉树(Binary Tree)是一种特殊的树结构,其中每个结点最多只能有两个子结点,正确
因此选B

标签:编码,平方,哈夫曼,初赛,关键字,二叉树,圆环
From: https://www.cnblogs.com/myeln/p/18414404

相关文章

  • 【代码随想录Day17】二叉树Part05|练习递归
    654.最大二叉树题目链接/文章讲解:代码随想录视频讲解:又是构造二叉树,又有很多坑!|LeetCode:654.最大二叉树_哔哩哔哩_bilibili思路和昨天的从中序与后序遍历序列构造二叉树很像,那一题是根节点对数组分割,这一题是最大元素对数组分割。代码解释:基本检查:如果输入数组nums......
  • 树和二叉树基本术语、性质
    总结二叉树的度、树高、结点数等属性之间的关系(通过王道书5.2.3课后小题来复习“二叉树的性质”)树的相关知识 叶子结点的度=0层次默认从1开始有些题目从0开始也不要奇怪常见考点1:结点数=总度数+1 常见考点2:度为m的树和m叉树 常见考点3:度为m的树第i层至多有......
  • 代码随想录算法训练营,9月14日 | 530.二叉搜索树的最小绝对差,501.二叉搜索树中的众数,23
    530.二叉搜索树的最小绝对差题目链接:530.二叉搜索树的最小绝对差文档讲解︰代码随想录(programmercarl.com)视频讲解︰二叉搜索树的最小绝对差日期:2024-09-14想法:好好利用二叉搜索树中序遍历是有序的性质,设置一个节点表示前一个结点就能很方便的计算差值了Java代码如下:classSo......
  • 【遍历二叉树】---先,中,后,层序遍历 及 先序建立整树
    0.二叉树结点的链式存储结构#include<stdio.h>#include<stdlib.h>typedefcharTElemType;//树中元素基本类型为char类型#defineboolint#definetrue1#definefalse0//二叉树结点链式存储结构(二叉链表)typedefstructBiNode{ TElemTypedata;//数据域 str......
  • 代码随想录算法训练营,9月13日 | 654.最大二叉树,617.合并二叉树,700.二叉搜索树中的搜索
    654.最大二叉树题目链接:654.最大二叉树文档讲解︰代码随想录(programmercarl.com)视频讲解︰最大二叉树日期:2024-09-13想法:根据昨天中后序列构造二叉树的经验,要找到数组中的最大值的位置,可以设置两个指针表示子树的范围(左闭右开)Java代码如下:classSolution{publicTreeNo......
  • 代码随想录算法 - 二叉树3
    题目1513.找树左下角的值给定一个二叉树的根节点root,请找出该二叉树的最底层最左边节点的值。假设二叉树中至少有一个节点。示例1:输入:root=[2,1,3]输出:1示例2:输入:[1,2,3,4,null,5,6,null,null,7]输出:7提示:二叉树的节点个数的范围是[1,104]-......
  • 信息学奥赛初赛天天练-88-CSP-S2023阅读程序1-数据类型、unsigned 关键字、二进制、位
    信息学奥赛初赛天天练-88-CSP-S2023阅读程序1-数据类型、unsigned关键字、二进制、位运算、左移、右移、异或运算PDF文档公众号回复关键字:202409132023CSP-S阅读程序1判断题正确填√,错误填⨉;除特殊说明外,判断题1.5分,选择题3分,共计40分)01#include<iostream>......
  • leetcode刷题day17|二叉树Part05(654.最大二叉树、617.合并二叉树、700.二叉搜索树中的
    654.最大二叉树构造树一般采用的是前序遍历,因为先构造中间节点,然后递归构造左子树和右子树。递归三步曲:1、传入参数,整数数组,数组的开始和结束,返回树的中间节点。2、终止条件:开始大于等于结束,即数组为空。3、递归逻辑:找到最大的元素,记录元素其下标,构建中间节点;递归构造......
  • 【数据结构】第八节:链式二叉树
    个人主页: NiKo数据结构专栏: 数据结构与算法 源码获取:Gitee——数据结构一、二叉树的链式结构typedefintBTDataType;typedefstructBinaryTreeNode{ BTDataTypedata; structBinaryTreeNode*left;//左子树根节点 structBinaryTreeNode*right;//右子......
  • 洛谷P8208 [THUPC2022 初赛] 骰子旅行 题解 期望DP
    题目链接:https://www.luogu.com.cn/problem/P8208解题思路:定义\(d_u\)表示节点\(u\)的出度,定义\(V_u\)表示节点\(u\)一步能够走到的节点的集合。定义状态\(p_{u,c,v}\)表示从节点\(u\)出发走恰好\(c\)步的情况下,至少经过一次节点\(v\)的概率。则:若\(v=......