那么,我只复习单选,希望出题人好自为之,不要在阅读程序继续放计算几何了。
反思了去年分数只有 70 出头的原因,阅读那没得说活该自闭,填空还是四毛子全对的情况,主要问题在于单选错了 4 个,这 8 分至少有一半是可以避免的。
所以今年我的初赛任务就是单选的 30 分全对。
2021 年:
- 在 Linux 系统终端中,用于列出当前目录下所含的文件和子目录的命令为( )。
-
A. ls
-
B. cd
-
C. cp
-
D. all
答案:C。
这个题真的是去年让我开幕雷击:我完全没有使用过 linux,更遑论其终端命令了。
所以我觉得有些常用命令还是需要记忆一下的,防止偷袭:
-
ls:列出当前工作目录下的所有文件、文件夹的名称。
-
pwd:用于找到目前所在的位置,确定返回路径。
-
cd:用于切换当前的工作目录。这个 windows 也有。
-
mkdir:用于创建文件夹。这个 windows 也有。
-
touch:用于创建文件。
-
cp:用于复制文件\文件夹。
-
mv:用于移动文件\文件夹。
-
rm:用于删除文件\文件夹,这个感觉大家都知道。
-
vim:用于查看和编辑文件的内容。
-
cat:可以查看单个文件内容,也可以合并两个文件。
- 以下排序方法中,( )是不稳定的。
-
A. 插入排序
-
B. 冒泡排序
-
C. 堆排序
-
D. 快速排序
答案:C。
这其实是一个老生常谈的问题,不过有些内容我有些淡忘,这里顺便复习一下:插入、冒泡、归并稳定;选择,希尔,快速,堆不稳定。
- 以比较为基本运算,对于 \(2n\) 个数,同时找到最大值和最小值,最坏情况下需要的最小的比 较次数为( )。
-
A. \(4n-2\)
-
B. \(3n+1\)
-
C. \(3n-2\)
-
D. \(2n+1\)
答案:C。
显然有 \(4n-2\) 的做法,但是认真想想这个题不应该这么简单:观察到序列长度是偶数,不如两两分组,组内比较一次得到较大的和较小的,这花费 \(O(n)\) 的代价,此时你只用在 \(n\) 个数里寻找最大值;最小值同理。因此只需要比较 \(3n-2\) 次。所以答案只能是 \(C\) 或者 \(D\)。我们仔细想想,似乎 \(2n+1\) 过于优秀了,毕竟单纯求最小值都肯定要 \(2n-1\) 次比较,感性理解,不太可能额外再花费两次找出最大值。我觉得这个题应该是 21 年思维最强的单选。
2020 年:
- 现有一段 \(8\) 分钟的视频文件,它的播放速度是每秒 \(24\) 帧图像,每帧图像是 一幅分辨率为 \(2048\times 1024\) 像素的 \(32\) 位真彩色图像。请问要存储这段原始无压缩视频,需要多大的存储空间?( )。
-
A. 30G
-
B. 90G
-
C. 150G
-
D. 450G
答案:B。
这种题只要换点数据,每年都能出一次。拿出来说的原因是:“ 32 位真彩色图像 ” 这个东西。常规的“真彩色图像”如果不说位数那么应该是默认 24bit 的(RGB各8个bit),这里特别说了那么问题就少了。
- 1948 年,( )将热力学中的熵引入信息通信领域,标志着信息论研究的开端。
-
A. 欧拉
-
B. 冯诺依曼
-
C. 香农
-
D. 图灵
答案:C。
想起两年前的我竟然不知道香农的大名,愧为 OI 选手。
那么,这个题放到现在肯定是问题不大了。
2019 年:
- 若有定义:
int a=7; float x=2.5,y=4.7
,则表达式x+a%3*(int)(x+y)%2
的值是()。
-
A. 0.000000
-
B. 2.750000
-
C. 2.500000
-
D. 3.500000
答案:D。
并不难,但是要清楚的知道强制转 int 属于截断,直接舍掉小数位,这张卷子的第五题需要这个知识。
- 多少个五位数字字符串颠倒过后不变,且值为 \(3\) 的倍数?()。
-
A. 40
-
B. 25
-
C. 30
-
D. 20
答案:B。
注意到只有 0/1/6/8/9 有用,第三个位置只能填0/1/6,当你确定了左边的一个位置,右边对应位置也随之确定。
但是你还要考虑 \(3\) 的倍数这回事。直接枚举会很慢,考虑这里手推 dp:设 \(f(i,j)\) 是前 \(i\) 位确定且数字和为 \(j\) 的情况,容易发现只有 \(9\) 个状态,这样很容易推。
这个题告诉我们有时候手动递推更加有效率且不容易出错。
另外,这张卷子的填空 T2 是个简单的状压相关的 dp。那么在这里我想复习一下运算符之间的顺序,这是容易混淆的,复赛的时候建议现场全部塞括号。
其实也不用记很多:非运算是一元优先级很高,然后移位运算>比较运算>位运算>逻辑运算。内部有先 and 后 or 的说法,然后就差不多了。