【LGR-(-11)】CSP 2020 第一轮(初赛)模拟 题解

CSDN同步

前言

一开始查排名的时候不知道为啥翻遍了排名榜都没找到。

后来才找到了?\(94\) 分竟然没找到,佩服佩服。

链接在这 \(\rightarrow\) 2020 洛谷初赛模拟

如果乐意直接看答案的话,公布一手:

ABCBA CABCB DBACD
FTTTBA
FFTTAA
FFFTCC
CDDAC
CBDCB

题解

单项选择题

\(1\) 题,首先符号位是 \(1\)(负数),其次 \(124_{(10)} = 01110010_{(2)}\),补码即为 \(10001101\),然后接上符号位是 \(10001110\). 选 \(A\).

\(2\) 题排除法,\(ACD\) 都是著名 \(\text{OJ}\),选 \(B\).

\(3\) 题,考虑一个类似 \(\text{Cantor}\) 的做法。

\((B-A) * 26^2 + (Y-A) * 26^1 + (T-A) * 26^0 = 1319\),然后 \(1\) 位的有 \(26\) 个,\(2\) 位的有 \(26^2\) 个,\(1319+26+26^2 = 2021\) 个。

所以编号为 \(2022\),选 \(C\).

\(4\) 题,我竟然错了 \(\frac{4096 * 2160 * 24 bit}{1024 * 1024 * 8} = 25MB\)(物理上的等号,约等于)。选 \(B\).

\(5\) 题,本人也没搞懂是什么算法(后来知道是一个叫 nth_element 的东西)可以做到 \(\mathcal{O}(n)\),但是好像没说能用算法解决,所以问题转化为四个复杂度最优的是哪个?选 \(A\).

\(6\) 题,\((1)\) 必然是错的,因为没有强调 连通图\((2)(3)\) 都是对的,\((4)\) 也是错的。因为树是无向无环的。选 \(C\).

\(7\) 题,我也错了 其实这题类似于合并果子的最小代价,不过是反向的合并果子(拆分果子?),最优方案是:\(42 = 15 + 27 = (10 + 5) + (13 + 14)\),代价为 \(42 + 15 + 27 = 84\),选 \(A\).

\(8\) 题,根据先中遍历可以唯一确定树。

\(H\) 是根。然后按照题目的方法(即完全二叉树的存储方法,学过线段树的应该都知道),最大的 \(E\)\(13\). 选 \(B\).

\(9\) 题,暴力题,不说了,选 \(C\).

\(10\) 题,最优的情况是,第一次查找的就是链表第一个元素,第 \(i (i > 1)\) 次查找的是第 \(i-1\) 次查找后插入的元素。\(\mathcal{O}(k)\),选 \(B\).

\(11\) 题,可以枚举。

\(A\) \(B\) \(C\)
\(5\) \(1\) \(0\)
\(5\) \(0\) \(1\)
\(4\) \(2\) \(0\)
\(4\) \(1\) \(1\)
\(4\) \(0\) \(2\)
\(3\) \(3\) \(0\)
\(3\) \(2\) \(1\)
\(3\) \(1\) \(2\)
\(3\) \(0\) \(3\)
\(2\) \(4\) \(0\)
\(2\) \(3\) \(1\)
\(2\) \(2\) \(2\)
\(2\) \(1\) \(3\)
\(1\) \(4\) \(1\)
\(1\) \(3\) \(2\)
\(1\) \(2\) \(3\)
\(0\) \(4\) \(2\)
\(0\) \(3\) \(3\)

\(18\) 种,选 \(D\).

\(12\) 题,只有插入排序复杂度为 \(\mathcal{O}(n^2)\). 选 \(B\).

\(13\) 题,大概像我这种出题比较多的造数据都会用到。

\([a,b-1] \rightarrow [0,b-a-1] + a \rightarrow \text{rand()}\%\text{(b-a)} + a\),选 \(A\).

\(14\) 题,完全图有 \(7 \times 6 \div 2 = 21\) 条边,森林有 \(7-1=6\) 条边,删去 \(15\) 条,选 \(C\).

\(15\) 题,常识题,选 \(D\).

阅读程序题

\(1\)

该程序的功能就是记忆化计算了 \(gu\) 函数的值。\(gu\) 没有应用意义。可以发现 \(gu_{i,j} = gu_{i,j-1} (j \% 2 =0)\)

  1. 显然 \(m\) 是奇数不影响做法。\(F\).
  2. 会改变,因为那样会把 \(=m\) 的答案也加上了。\(T\)
  3. 删去记忆化的代码会增高时间复杂度,但不影响答案。\(T\).
  4. 显然,\(T\).
  5. 建立二维表即可,\(B\).
  6. 记忆化计算 \(nm\) 个值,每次计算复杂度为 \(\mathcal{O}(m)\),所以为 \(\mathcal{O}(m^2n)\),选 \(a\)

\(2\)

我也不知道这程序是干嘛的,题错了 \(1\) 个。???

不过 \(f\) 存的是最短路,老 \(\text{Floyd}\) 家都知道。

  1. \(\text{Floyd}\) 家了,肯定影响答案。\(F\).
  2. 该程序复杂度为 \(\mathcal{O}(n^4 + m)\),虽然 \(m\) 影响很小,但还是含有的。\(F\).
  3. \(F\) 数组最大为 \(100 \times 10000 = 10^6\)\(\text{ans}\) 最大约可达到 \(10^6 \times 100 = 10^8\),因此 \(10^7\) 不够大。\(T\).
  4. 显然不变,对 \(x\)\(y\) 类似的松弛操作没有顺序。\(T\).
  5. 我是人工算的,\(A\).
  6. 都说了是 \(\text{Floyd}\) 了,\(A\).

\(3\)

写过 \(\text{NOIP2016 tg}\) 组合数问题的人应该都知道,\(A_{i,j} = C_i^j\)\(\text{sum}\) 就是杨辉三角的前缀和。

  1. 显然,\(i=j\) 时为 \(1\)\(F\).
  2. 不是排列数,是组合数。可枚举验证。\(F\).
  3. 本来应该是对的,但是由于有模数,\(1000\) 之内的组合数远远大于 \(19260817\),可能出现加和模之后变小。\(F\).
  4. 没有溢出问题的话,这样写是对的。这个写法也常用来对负数取模。\(T\).
  5. \(4\) 分!\(10\) 以内的最大组合数为 \(C_{10}^5 = 252\),选 \(C\).
  6. 手算一下前缀和即可。答案为 \(50\),选 \(C\).

完善程序题

\(1\)

理解程序的原理很重要,本人在第 \(2\) 小题也卡了一会儿。

该原理就是,可以建立树,\(a_i\)\(i\) 的父亲。从不被关注的叶子节点开始,叶子节点首先枪毙。然后往上走,如果 当前节点不被枪毙 并且 没有人关注当前节点的父亲节点,则毙掉父亲节点。边也要断掉。

  1. 断边操作需要减掉一个度。选 \(C\).
  2. 只有不被关注的节点(叶子节点)才会被 \(\text{dfs}\),选 \(D\).
  3. 很显然,对于一条链,分奇偶枪毙。选 \(D\).
  4. 毙掉叶子节点,选 \(A\).
  5. 最后出现的是没有访问过的节点,选 \(C\).

\(2\)

显然,这道题是反向扫一遍,程序原理很简单。反向更新最小值和和,然后直接算、打擂就行。用栈记录最后的答案。

  1. 初始的和为 \(s_n\),选 \(C\).
  2. 统计和,选 \(B\).
  3. 计算除最小值以外的平均值。\([i,n]\)\(n-i+1\) 个数,去掉最小值是 \(n-i\) 个,特此说明。选 \(D\).
  4. \(k\)\(\text{cnt}\) 维护的是栈。出现新的答案,应清空栈,然后加入当前的答案。选 \(C\).
  5. 同样的答案直接加入栈中,熟悉栈的操作。选 \(B\).
posted @ 2020-10-09 10:10  bifanwen  阅读(2771)  评论(2编辑  收藏  举报