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

A、裁纸刀

好难。不会。

B、灭鼠先锋

博弈论。

首先、对于棋盘的任一种情况都是必赢或者必输。

基本思路:

如果我存在放置一个棋子,或在同一行的连续两个空位上各放置一个棋子可以赢,我就必赢,否则我必输。然后不断递归即可。

答案:VVVL

C、质因数个数

枚举   2 ∼ n   ~2\sim\sqrt n~  2n  即可。

每次枚举,假设当前枚举的数为 i i i

如果   ( n   m o d   i ) = 0 ~(n\bmod i)=0  (nmodi)=0,不断 $ n := \frac n c$ 至   ( n   m o d   i ) ≠ 0 ~(n\bmod i)\ne0  (nmodi)=0

且打印 i i i

D、选数异或

先将值和之所在的位置进行映射。设   f ( A i ) = { i ∣ A i = i }   ~f(A_i)=\left\{i|A_i=i\right\}~  f(Ai)={iAi=i} 

然后,根据   a ⊕ b = c ⇒ a ⊕ c = b   ~ a\oplus b=c \Rightarrow a\oplus c=b~  ab=cac=b ,则可知 i i i f ( A i ⊕ x ) f(A_i\oplus x) f(Aix)位置下的元素异或等于 x x x。【需要保证 f ( A i ⊕ x ) f(A_i\oplus x) f(Aix)大于 i i i而最小,不然会有重复数据,给下一步带来额外的时间开销】

将每个 i i i对应的 f ( A i ⊕ x ) f(A_i\oplus x) f(Aix)放入数据 B B B

现在,处理每个询问。

对于每次询问的 l i , r i l_i,r_i li,ri取数组B的 [ l i , r i ] [l_i,r_i] [li,ri]区间内的最小值是否满足 [ l i , r i ] [l_i,r_i] [li,ri]即可。

区间查询最小值可以用线段树或者ST表来维护。

Ps:这题比赛用暴力写的,没有完全做出来。

E、GCD

gcd ⁡ ( a + k , b + k ) = g c d ( b − a , a + k ) \gcd(a+k,b+k)=gcd(b-a,a+k) gcd(a+k,b+k)=gcd(ba,a+k)

所以答案为求最小的 k k k,且   ( a + k )   m o d   ( b − a ) = 0 ~(a+k)\bmod (b-a)=0  (a+k)mod(ba)=0

F、爬树的甲壳虫

x i x_i xi为甲壳虫爬到高度为 i i i的期望时长。

考虑甲壳虫有掉下和往上爬一下两个可能,写出 x i x_i xi x i − 1 x_{i-1} xi1之间的关系。
x i = P i ( x i − 1 + 1 + x i ) + ( 1 − P i ) ( x i − 1 + 1 ) 化 简 得   x i = x i − 1 + 1 1 − P i , 且 x 0 = 0 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 xi=Pi(xi1+1+xi)+(1Pi)(xi1+1) xi=1Pixi1+1,x0=0
求逆元不会可以出门左转,学习下费马小定理和快速幂。

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

G、全排列的价值

找规律。

H、 扫描游戏

模拟题。

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

I、数的拆分

这个是真不会。

Ps:暴力写了一半。

J、重复的数

莫队算法。

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

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值