Codeforces Round 885 (Div. 2)

发布时间 2023-08-01 20:41:07作者: Messi_K

Codeforces Round 885 (Div. 2)

A. Vika and Her Friends

​ 考虑 Vika 和其中一个朋友的距离,Vika 走一步,他们的距离要么加一要么减一;朋友也一样。那么每秒后他们的距离,要么不变,要么 ±2。那么与 Vika 距离为奇数的朋友,永远抓不到 Vika。与 Vika 距离为偶数的朋友,总能将 Vika 逼到角落将其击杀。这个思路是在看完样例解释以后突然想到的。

B. Vika and the Bridge

​ 每种颜色分开讨论。间隔最远的区域,在中间染一次颜色。考场上莫名其妙就炸了。

C. Vika and Price Tags

​ 看了题目,发现题目上这种操作类似辗转相减法。那么既然是辗转相减,我们肯定会想到 \(\gcd\)

​ 如果为 \((0,0)\),则任何一次都为 \(0\) , 如果至少有一个非0,通过找规律,它在第 \(num \mod 3\) 次为0.

举个例子

2
2 3 
6 5

(2,6),(3,5)它们的变化规律如下

[(2,6),(6,4),(4,2),(2,2),(2,0),(0,2),(2,2),(2,0),(0,2),(2,2),(2,0),(0,2),...]
[(3,5),(5,2),(2,3),(3,1),(1,2),(2,1),(1,1),(1,0),(0,1),(1,1),(1,0),(0,1),...]

知道上述规律,利用 \(\gcd\) 优化,加速计算过程。

D Vika and Bonuses

​ 学了二次函数终于用上了,但比赛的时候连个题目都没看。首先我们手模一下个位的变化情况,可以发现循环节为 \(4\) 然后 \(s\) 会增加 \(20\) ,我们进行 \(x\) 轮循环后答案为 \(y\) 那么表达式为 \(y=(s+20x)(k-4x)\) 变成二次函数的一般式即为 \(y=-80x^2+(20k-4s)x+s\times k\) ,而 \(k\)\(s\) 都是已知的, 根据小学数学可知这个函数的顶点的 \(x\) 轴坐标为 \(\dfrac{5k-s}{40}\) 但我们要是整数,需要向下取整或向上取整。然后再求一个 \(\max\)

E Vika and Stone Skipping

​ Pollard-Rho这个算法,正在学。(学完再补)

F Vika and Wiki

高维前缀和不太会。