CF1692G 2^Sort
题目描述
给定一个长度为 $n$ 的数组 $a$ 和一个整数 $k$,请你求出有多少个下标 $1 \leq i \leq n - k$,使得长度为 $k+1$ 的子数组 $[a_i, \dots, a_{i+k}]$(注意长度为 $k+1$,不是 $k$)满足以下性质:
- 如果将第一个元素乘以 $2^0$,第二个元素乘以 $2^1$,……,第 $k+1$ 个元素乘以 $2^k$,那么这个子数组是严格递增的。
更正式地说,统计有多少个下标 $1 \leq i \leq n - k$ 满足
$$
2^0 \cdot a_i < 2^1 \cdot a_{i+1} < 2^2 \cdot a_{i+2} < \dots < 2^k \cdot a_{i+k}。
$$
输入格式
第一行包含一个整数 $t$($1 \leq t \leq 1000$),表示测试用例的数量。
每个测试用例的第一行包含两个整数 $n$ 和 $k$($3 \leq n \leq 2 \times 10^5$,$1 \leq k < n$),分别表示数组的长度和不等式的数量。
每个测试用例的第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \leq a_i \leq 10^9$),表示数组的元素。
所有测试用例中 $n$ 的总和不超过 $2 \times 10^5$。
输出格式
对于每个测试用例,输出一个整数,表示满足题目条件的下标数量。
说明/提示
在第一个测试用例中,两个子数组都满足条件:
- $i=1$:子数组 $[a_1,a_2,a_3] = [20,22,19]$,有 $1 \cdot 20 < 2 \cdot 22 < 4 \cdot 19$。
- $i=2$:子数组 $[a_2,a_3,a_4] = [22,19,84]$,有 $1 \cdot 22 < 2 \cdot 19 < 4 \cdot 84$。
在第二个测试用例中,有三个子数组满足条件:
- $i=1$:子数组 $[a_1,a_2] = [9,5]$,有 $1 \cdot 9 < 2 \cdot 5$。
- $i=2$:子数组 $[a_2,a_3] = [5,3]$,有 $1 \cdot 5 < 2 \cdot 3$。
- $i=3$:子数组 $[a_3,a_4] = [3,2]$,有 $1 \cdot 3 < 2 \cdot 2$。
- $i=4$:子数组 $[a_4,a_5] = [2,1]$,但 $1 \cdot 2 = 2 \cdot 1$,所以这个子数组不满足条件。
由 ChatGPT 4.1 翻译