蓝桥杯2022研究生C/C++组
A、裁纸刀
好难。不会。
B、灭鼠先锋
博弈论。
首先、对于棋盘的任一种情况都是必赢或者必输。
基本思路:
如果我存在放置一个棋子,或在同一行的连续两个空位上各放置一个棋子可以赢,我就必赢,否则我必输。然后不断递归即可。
答案:VVVL
C、质因数个数
枚举\(~2\sim\sqrt n~\)即可。
每次枚举,假设当前枚举的数为\(i\)。
如果\(~(n\bmod i)=0\),不断 $ n := \frac n c$ 至\(~(n\bmod i)\ne0\),
且打印\(i\)。
D、选数异或
先将值和之所在的位置进行映射。设\(~f(A_i)=\left\{i|A_i=i\right\}~\)。
然后,根据\(~ a\oplus b=c \Rightarrow a\oplus c=b~\),则可知\(i\)和\(f(A_i\oplus x)\)位置下的元素异或等于\(x\)。【需要保证\(f(A_i\oplus x)\)大于\(i\)而最小,不然会有重复数据,给下一步带来额外的时间开销】
将每个\(i\)对应的\(f(A_i\oplus x)\)放入数据\(B\)。
现在,处理每个询问。
对于每次询问的\(l_i,r_i\)取数组B的\([l_i,r_i]\)区间内的最小值是否满足\([l_i,r_i]\)即可。
区间查询最小值可以用线段树或者ST表来维护。
Ps:这题比赛用暴力写的,没有完全做出来。
E、GCD
\(\gcd(a+k,b+k)=gcd(b-a,a+k)\)
所以答案为求最小的\(k\),且\(~(a+k)\bmod (b-a)=0\)
F、爬树的甲壳虫
设\(x_i\)为甲壳虫爬到高度为\(i\)的期望时长。
考虑甲壳虫有掉下和往上爬一下两个可能,写出\(x_i\)和\(x_{i-1}\)之间的关系。
求逆元不会可以出门左转,学习下费马小定理和快速幂。
Ps:就是这道题才写的这篇题解,就像为了点醋才包了饺子。
G、全排列的价值
找规律。
H、 扫描游戏
模拟题。
Ps:这题没写出来。觉得太浪费时间了。
I、数的拆分
这个是真不会。
Ps:暴力写了一半。
J、重复的数
莫队算法。
Ps:排序写错了,啊啊啊啊啊啊。