给定非严格递增数组 t1≤t2≤⋯≤tn,允许至多一次操作:选择区间 [l,r](长度 L=r−l+1),对每个 i∈[l,r] 执行
ti←ti+K⋅(r−i+1).这是一个公差为 −K 的等差增量,左端点的增量最大,为 KL。
在一个气象观测站,记录了一连串 n 天的日最高气温 t1,t2,…,tn,已知气温变化是非递减的,即 t1≤t2≤⋯≤tn。你可以至多进行一次“热浪模拟”:选择一个连续的日期区间 [l,r](1≤l≤r≤n),并对其中每一天 i 执行操作 ti←ti+K×(r−i+1),其中 K 是一个正常数。你的目标是使整个序列的温差(最大值与最小值之差,即 max{ti}−min{ti})严格大于给定的阈值 D。请计算出达成目标所需的最小区间长度(区间长度定义为 r−l+1,允许操作长度 0,即不操作已满足条件时答案为 0)。如果无论怎么操作都无法使温差大于 D,则输出 −1。【数据范围与约定】- 测试用例数 T 不超过 104。- 序列长度 n 满足 2≤n≤2×105,所有测试数据的 n 总和不超过 2×105。- 阈值 D 满足 0≤D≤1012。- 系数 K 满足 1≤K≤109。- 每个温度值 ti 满足 1≤ti≤109,且序列非递减。
第一行包含一个整数 T,表示测试数据组数。接下来每组数据包含两行:第一行包含三个整数 n,D,K,第二行包含 n 个整数 t1,t2,…,tn。
对于每组数据,输出一行一个整数,表示所需的最小区间长度;如果无法达成则输出 −1。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册