我以为是我太菜了
,但是也确实是
考试前居住地疫情四起,本来以为能推迟/线上赛,结果直接下放到县级考
前天晚上我还在给 eweOS 拆 binutils-objcopy
,
明天初赛今天上午就临时抱佛脚,趁着自习课跑微机室看题
此题坑非常多,以及部分题目非常坑。四毛子树今天是学不会了。本来想给 自己点信心结果被打击得不行(x),最后还是 知乎上的问题救回了我崩掉的心态
程序阅读第三题响当当的 base64,看见 64 个字符和 =
立马认出来
搞工程出身的算个编码背个 ASCII 调试用挺正常的
至于 underdefined behavior,印象里好像是照 signed char
来做的
蒙 幸好前段时间学了点微积分
$$ \arccos 0.5 = \frac{\pi}{3} $$
正好和球的体积公式
$$ V = \frac {\pi}{3} R^3$$
部分重合
if else 语句讨论了三种情况:两球相离,一个球完全在另一个内,以及最麻烦的交
至于怎么看出来是体积交的,
先看最后一道选择,既然都是空间了那肯定不是圆的面积; 只给了一个点和一个长度确定不了椭球,于是答案在 BC 徘徊。
如果我们把两个对应的球画出来,沿着 Z 轴所在的某一个剖面来看, 我们可以看到连接剖面的两个交点,与球心的连线形成了直角三角形。 此时计算 x,y 及其在图形中对应的意义,涉及到曲线体积再积一下分就能选出来。
(当然太麻烦了,直接代数,发现求的只可能是体积交)
第一个判断开始也错了(x)
首先拿上判断题最后一问手算,solve1 递归挺费演算纸的
于是先算了看起来比较显然的 solve2()
,
算出跨越中点的最大子数组的值之后就明白这道题在干什么了
选择题第一题的时间复杂度也算错了,上去选了 $ O(n \lg n)$ ,结果错了。
画一下递归树,然后发现事实上每一个节点的复杂度是 $ O(1) $ 不是 $ O(n) $。 共有 $ \lg n $ 层,于是总复杂度是 $$ \sum _ {k = 0} ^{\lg n - 1} 2 ^k $$
用 $ n = 2^t $ 替换 $ n $,得到
$$ \sum _ {k = 0} ^ {t - 1} 2^k $$
也就是 $ 2^t - 1 $,再代回去 $ t = lg n $,结果就是 $ n - 1 $
至于为什么最后一道选择不选 24,我也不知道
目测有点动态规划的感觉
F[x]
像代价数组(开始设置为 INT_MAX
,最后又被输出),
很明显 F[n]
就是写出 n
需要多少个 4。
我们且称之为 四表示 (不错的名字)
那么写出 4 只需要一个 4 就行了(逃),第一题选 D
先不看第二题因为看不出来,第三题决定了我们每次外层循环选中的 x
。
对应的 Vis[x]
数组意味着我们是否已经用过 x
来生成
别的数字的四表示了(得出这一点需要和其它选项一起分析),
那么在 Vis[x] = 1
前的 for
循环中,我们要找出的 x
必须从未包含在其它数字的四表示内,同时希望表示它的四表示
所需的4 尽可能少,于是第三题选择 D
我们可以回过头选择第二题了,因为只有 n
已经被用来表示其它数字,
它的代价才已经确定,不会再改变了。
第四题也很容易选择,如果我们要用 x
和 i
表示其它数字,
我们必须保证 x
和 i
的四表示已经确定了,
也就是 Vis[x]
和 Vis[i]
已经被置位了。
前者已经保证过了,后者就是第四个空的答案
撒花!
请注意!一遍遍被递增的这个 r
是没用的!!!
上场时间肯定是不够的
就这样吧。