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
高维前缀和不太会。