蓝桥杯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}\)之间的关系。

\[x_i=P_i(x_{i-1}+1+x_i)+(1-P_i)(x_{i-1}+1)\\化简得~x_i=\frac{x_{i-1}+1}{1-P_i},且x_0=0 \]

求逆元不会可以出门左转,学习下费马小定理和快速幂。

Ps:就是这道题才写的这篇题解,就像为了点醋才包了饺子。

G、全排列的价值

找规律。

H、 扫描游戏

模拟题。

Ps:这题没写出来。觉得太浪费时间了。

I、数的拆分

这个是真不会。

Ps:暴力写了一半。

J、重复的数

莫队算法。

Ps:排序写错了,啊啊啊啊啊啊。

posted @ 2022-04-10 14:48  opooopooo  阅读(338)  评论(0编辑  收藏  举报