答案
AACBB
BDABD
ACBCD
✓××BC
✓✓✓BCC
✓×✓CAC
AAAAA
AABAA
單項選擇
1
在 Linux 系統中,如果你想顯示當前工作目錄的路徑,應該使用哪個命令?
A
pwd
Bcd
Cls
Decho
pwd
: print working directory
cd
: 跳轉到指定目錄
ls
: 列出當前目錄的所有子檔案和子資料夾
echo
: 輸出指定內容
2
假設一個長度為n的整數陣列中每個元索值互不相同,且這個陣列是無序的。要找到這個陣列中最大元素的時間複雜度是多少?
A \(O(n)\)
B \(O(logn)\)
C \(O(nlogn)\)
D \(O(1)\)
無序的陣列只能透過兩兩比較來查詢,需要比較 \(n-1\) 次(第一次不需要比較),因此為 \(O(n)\)
3
在 C++中,以下哪個函式呼叫會造成溢位?
A
int foo(){ return 0;}
Bint bar(){int x=1;return x; }
Cvoid baz(){ int a[1000];baz();)
Dvoid qux(){ return; }
函式棧溢位一般有兩種:函式內變數開的太大,或者函式遞迴深度太深
這裡 baz()
函式重複呼叫自身,無終止條件,因此會溢位
4
在一場比賽中,有 \(10\) 名選手參加,前三名將獲得金、銀、牌。若不允許並列,且每名選手只能獲得一枚獎牌,則不同的頒獎方式有多少種?
A 120
B 720
C 504
D 1000
不妨選出一個長度為 \(3\) 的序列,依次獲得金,銀,銅牌,則方案有 \(A^{3}_{10}=10\times 9\times 8=720\) 種
5
下面哪個資料結構最適合實現先進先出(FIFO)的功能?
A 棧
B 佇列
C 線性表
D 二叉搜尋樹
棧是先進後出
後面兩種資料結構不具備存放與彈出基本資料的功能
線性表在功能上類似陣列
6
已知 \(f(1)=1\),且對於 \(n\ge2\) 有 \(f(n)=f(n-1)+f(⌊n/2⌋)\) ,則 \(f(4)\) 的值為:
A \(4\)
B \(5\)
C \(6\)
D \(7\)
\(f(2)=f(1)+f(1)=2\)
\(f(3)=f(2)+f(1)=3\)
\(f(4)=f(3)+f(2)=5\)
7
假設有一個包含 \(n\) 個頂點的無向圖,且該圖是尤拉圖。以下關於該圖的描述中哪一項不一定正確?
A 所有頂點的度數均為偶數
B 該圖連通
C 該圖存在一個尤拉回路
D 該圖的邊數是奇數
尤拉圖定義:僅由尤拉回路構成的圖
尤拉回路:即一筆能畫完的圖。形式化地說,尤拉回路是從任意一個點出發,不重複經過任何一條邊,也不遺漏任何一條邊,最終仍能回到該節點的路徑
根據定義,D 是錯誤的,反例為一個正方形
8
對陣列進行二分查詢的過程中,以下哪個條件必須滿足?
A 陣列必須是有序的
B 陣列必須是無序的
C 陣列長度必須是 \(2\) 的冪
D 陣列中的元素必須為整數
二分查詢本質上也是一種二分答案,需要保證答案具有單調性
9
考慮一個自然數 \(n\) 以及一個數 \(m\),你需要計算 \(n\) 的逆元(即 \(n\) 在 \(m\) 意義下的乘法逆元),下列哪種演算法最為適合?
A 使用暴力法依次嘗試
B 使用擴充套件歐幾里得演算法
C 使用快速冪法
D 使用線性篩法
逆元的定義是這樣的:
定義 \(a\) 在模 \(p\) 意義下的逆元 \(b\) 滿足 \((\frac{c}{a})\mod p=(c\times b)\mod p\)
當 \(p\) 為質數的時候,才能使用快速冪(+費馬小定理)來求逆元,而擴充套件歐幾里得演算法為更加通用的求逆元方法,只需要滿足兩個數互質
更詳細的求逆元方法可以透過 這篇文章 的 5.3.1 章瞭解
10
在設計一個雜湊表時,為了減少衝突,需要使用適當的雜湊函效和衝突解決策略。已知某雜湊表中有 \(n\) 個鍵值對,表的裝載因子為 \(a(0<a\le 1)\) 。在使用開放地址法解決衝突的過程中,最壞情況下查詢一個元素的時間複雜度為
A \(O(1)\)
B \(O(logn)\)
C \(O(1/(1-a))\)
D \(O(n)\)
開放地址法解決衝突:假設當前元素 \(x\) 需要放入地址 \(p\) 中,但現在 \(p\) 位置已經有了元素,直接放置就會導致衝突,因此考慮向後依次找,找到第一個沒有放置元素的位置放置,這樣可以防止衝突(遍歷到最後再從頭開始)
因此最壞情況下需要把整個表遍歷一遍,複雜度為 \(O(n)\)
科普裝載因子的定義:裝載因子定義了一個閾值,當雜湊表中的條目數超出了載入因子與當前容量的乘積時,則要對該雜湊表進行擴容、rehash操作(即重建內部資料結構),擴容後的雜湊表將具有兩倍的原容量。
11
假設有一棵 \(h\) 層的完全二叉樹,該樹最多包含多少個結點?
A \(2^h-1\)
B \(2^{h+1}-1\)
C \(2^h\)
D \(2^{h+1}\)
因為每個節點都有兩個兒子,因此每一層的節點個數都是上一層的兩倍
總結點數為 \(1+2^{1}+2^{2}+\cdots+2^{h-1}=2^{h}-1\)
12
設有一個 \(10\) 個頂點的完全圖,每兩個頂點之間都有一條邊。有多少個長度為 \(4\) 的環?
A \(120\)
B \(210\)
C \(630\)
D \(5040\)
因為圖完全聯通,任取四個點一定能保證它們構成一個環
因為環上的點是無序的,因此很多人會考慮計算 \(C^{4}_{10}=\frac{10\times 9\times 8\times 7}{4\times 3\times 2\times 1}=210\),然而這樣是錯誤的
考慮是什麼地方出了問題
剛才我們說,任取四個點一定能保證它們構成一個環
但是環 1 2 3 4
和環 2 1 3 4
並不是同一個環,前者有 1->2->3
的連邊,後者有 2->1->3
的連邊,顯然不是同一個環
正確的做法是考慮重複的環:
注意到 1 2 3 4
2 3 4 1
3 4 1 2
4 1 2 3
是重複的,以此類推,每一種可能的組合都有四種可能的起始節點,因此會重複計算 \(4\) 次
另外,注意到 1 2 3 4
4 3 2 1
是重複的,同樣,上面的每一種反過來和原來都是一樣的,因此答案為 \(\frac{A^{4}_{10}}{2\times 4}=630\)
13
對於一個整數 \(n\)。定義 \(f(n)\) 為 \(n\) 的各位數字之和。問使 \(f(f(x))=10\) 的最小自然數 \(x\) 是多少?
A \(29\)
B \(199\)
C \(299\)
D \(399\)
代選項即可
\(f(29)=11,f(f(29))=2\)
\(f(199)=19,f(f(199))=10\)
\(f(299)=20,f(f(299))=2\)
\(f(399)=21,f(f(399))=3\)
14
設有一個長度為 \(n\) 的 01 字串,其中有 \(k\) 個 \(1\) ,每次操作可以交換相鄰兩個字元。在最壞情況下將這 \(k\) 個 \(1\) 移到字串最右邊所要的交換次數是多少?
A \(k\)
B \(\frac{k\times (k-1)}{2}\)
C \((n-k)\times k\)
D \(\frac{(2n-k-1)\times k}{2}\)
D 這個數的來源:令全部數字都排在最左邊,然後從右到左一個一個挪,然後認為答案是 \((n-1)+(n-2)+(n-3)\cdots+(n-k)\)
實際上,在排後面的數字時,由於右邊已經有排好的數字,不需要將新來的數字與排好的數字進行比較與交換了,所以每個數字的交換次數只有 \((n-k)\) 次,一共 \(k(n-k)\) 次
15
如圖是一張包含 \(7\) 個頂點的有向圖,如果要除其中一些邊,使得從節點 \(1\) 到節點 \(7\) 沒有可行路徑,且刪除的邊數最少,請問總共有多少種可行的刪除邊的集合?
A \(1\)
B \(2\)
C \(3\)
D \(4\)
一個可能更醜的圖
上來先注意到 \(\{8,9\}\) 是合法的,並且不存在只刪一個邊的解法,因此最優解為 \(2\)
可行的邊的集合
\(\{8,9\}\)
\(\{5,6\}\)
\(\{6,8\}\)
\(\{1,6\}\)
閱讀程式
本解析不提供原始題目程式,如有需要請透過 luogu.com.cn 相關連結 下載
1
分析
logic() 函式內的位運算,採用列舉法來判斷
- 當 \(x=0,y=0\) 時,
(0 & 0) ^ ((0 ^ 0) | (~0 & 0))
=0 ^ (0 | 0)
=0
- 當 \(x=0,y=1\) 時,
(0 & 1) ^ ((0 ^ 1) | (~0 & 1))
=0 ^ (1 | 1)
=1
- 當 \(x=1,y=0\) 時,
(1 & 0) ^ ((1 ^ 0) | (~1 & 0))
=0 ^ (1 | 0)
=1
- 當 \(x=1,y=1\) 時,
(1 & 1) ^ ((1 ^ 1) | (~1 & 1))
=1 ^ (0 | 0)
=1
因此為邏輯或運算
題目
- 當 \(1000\ge d\ge b\) 時,輸出的序列是有序的