牛客多校第五场

Gromah的题...

有些科技还是太为难老年人了...

C

题意

给定一个长为\(n\)的串,表示两个人打乒乓球,连续打\(n\)个球的结果

对于\(i\),我们定义\(i\)赛制表示,双方中有一方得分超过\(i\)分,并且分差大于等于\(2\)时结果比赛的赛制

现在询问,对\(i = 1, 2, ..., n\),在\(i\)赛制的情况下,Gromah赢了多少场

题解

还挺有意思的

一个显然的性质是,在\(i\)赛制下,比赛最多只有\(\lfloor \frac{n}{i} \rfloor\)

.....然后考场上就短路了...

我们可以预处理出\(A\)赢了\(i\)个球的位置和\(B\)赢了\(i\)个球的位置,依次,我们可以判断他们是否进入了平局的阶段,如果进入了平局的阶段,说明之后的比赛应该是两者一赢一输,这个段也可以预处理出来

然后就完事了

E

吐槽

考场上写的脑子有点懵

C++的右移是坑爹的逻辑右移,对一个负数不断右移会得到一堆\(1\),在利用\(\sim\)时被卡了记下...

G

吐槽

奇奇怪怪题

题意

给定\(a, b, \{p_i\}, \{q_i\}\),定义\(c = \prod p_i^{q_i}\),尝试找到\(x, y\),使得\(x + y\)最小,并且\(lcm(a+x, b+y) = c\)

题解

队友的做法我没听...好像是极限数据\(2^{27}\),但能卡卡的做法...(然后就WA了)

一个简单的想法是,枚举\(c\)的约数\(d_1\),假设\(a + x = d_1\)\(d_1\)也许会在若干质数上的次数没有卡到\(q_i\),这就需要\(b+y\)去调整,也就是说相当于对于某个数\(M\)\(b+y\)需要是\(M\)的倍数,而系数则应该是剩下卡到\(q_i\)的位置上质数次幂乘积的一个因子,难点在于如何寻找这个因子

利用折半搜索优化一下复杂度就能过了...