Codeforces Round 887 (Div. 2)

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

Codeforces Round 887 (Div. 2)

T1

​ 如果已经是无序直接输出零,如果有序, 找到前后相差最小的两个数, 答案

\[ans = \min\{a_{i+1}-a_i\}/2+1 \]

T2

​ 给定 \(n\)\(k\) ,问有多少单调不降且非负的斐波那契数列的第 \(k\) 项等于 \(n\),统计方案数。


既然 \(f_k\) 都知道了,那就枚举一下 \(f_{k-1}\) ,往前一直递推直到总项数等于 \(k\),如果在递推的过程中条件不符合了,就跳出循环,最后统计一下答案即可。

思路很暴力,因为斐波那契数列往回跳是个 log 的,所以时间复杂度只有 \(\Theta(n\log n)\),不会超时。

T3

​ 假设这些数字按递增顺序排列在一条直线上。在某一天之前看看每个数字 \(x\)。如果这一天它没有被删除,那么它占据了什么新的位置,它之前的位置对它有什么影响?

答案: 如果 \(x\) 位于 \(a_i\)\(a_{i+1}\) 之间,它将移动到 \(x-i\) 的新位置,因为在它之前的 \(i\) 个位置已被删除。

利用这一观察结果,反向模拟这一过程, 我们就可以得到答案。

T4

​ 构造题。首先找出最大数和 \(0\) ,将 \(a\) 从大到小排序,要记录原来的位置。接下来开始枚举,用一个变量来记录被减去的值。判断两种情况,并计算当前数的答案。由于每次都会较少一个属,因此数组中的绝对值互不相同,满足了第一个条件。

T5

​ 反悔贪心,目前还不会。

T6

​ 总体思路:dp + 分类讨论。但目前还磨得看懂。