C/C++教程

蓝桥杯2022研究生C/C++组

本文主要是介绍蓝桥杯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)+(i-P_i)(x_{i-1}+1)\\化简得~x_i=\frac{x_{i-1}+1}{i-P_i},且x_0=0 \]

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

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

G、全排列的价值

找规律。

H、 扫描游戏

模拟题。

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

I、数的拆分

这个是真不会。

Ps:暴力写了一半。

J、重复的数

莫队算法。

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

这篇关于蓝桥杯2022研究生C/C++组的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!