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 + 分类讨论。但目前还磨得看懂。