本题的目标是:在一个非降序列 x1≤x2≤⋯≤xn 上,至多进行一次“逆梯度扰动”操作,使得操作后存在相邻位置差的绝对值大于给定阈值 C,并求出所需的最短子序列长度;若无法做到则输出 −1。
操作定义为:选择子序列 [l,r](1≤l≤r≤n),对每个位置 i(l≤i≤r)将 xi 增加 v×(r−i+1)。其中 v 为给定正整数。
关键观察:操作对相邻差的影响
定义初始相邻差 di=xi+1−xi(1≤i<n),由于序列非降,有 di≥0。
你正在分析一个长度为 n 的基因表达序列 x1,x2,…,xn,该序列是非降的:x1≤x2≤⋯≤xn。你可以至多执行一次“逆梯度扰动”操作:选择一个连续子序列 [l,r](1≤l≤r≤n),并对每个位置 i(l≤i≤r)将 xi 增加 v×(r−i+1),其中 v 为给定正整数。换言之,子序列最右侧元素增加 v,向左每一步递增 v,最左侧增加 (r−l+1)v。
操作完成后,若存在某个相邻位置 j(1≤j<n)满足 ∣xj−xj+1∣>C,则称引发了“异常”。你希望使用尽可能短的子序列来引发异常。特别地,如果初始序列已经存在这样的相邻位置,你可以选择不进行任何操作(子序列长度视为 0)。如果所有可能的子序列都无法引发异常,请判定为不可能。
请你计算所需的最短子序列长度;若不可能,输出 -1。
约束:
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册