高州市荷花镇网站建设,wordpress手机边栏,外贸网站建设资料,系统之家win7纯净版CF1692G 2^Sort 题解题目链接字面描述题面翻译题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示思路代码实现题目
链接
https://www.luogu.com.cn/problem/CF1692G
字面描述
题面翻译
给你一个长度为 n(∑n2⋅105)n \ (\sum n 2\cdot 10^5)n (∑n…
CF1692G 2^Sort 题解题目链接字面描述题面翻译题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示思路代码实现题目
链接
https://www.luogu.com.cn/problem/CF1692G
字面描述
题面翻译
给你一个长度为 n(∑n2⋅105)n \ (\sum n 2\cdot 10^5)n (∑n2⋅105) 的数组 aaa问你在这个数组中有多少个长度为 k1(1≤kn)k 1 \ (1\le k n)k1 (1≤kn) 的区间符合以下的条件
20⋅ai21⋅ai122⋅ai2⋯2k⋅aik注i为这个区间开始的位置2^0 \cdot a_i 2^1 \cdot a_{i 1} 2^2 \cdot a_{i 2} \dotsi 2^k \cdot a_{i k}\\ \footnotesize{注i 为这个区间开始的位置} 20⋅ai21⋅ai122⋅ai2⋯2k⋅aik注i为这个区间开始的位置
由tzyt翻译
题目描述
Given an array $ a $ of length $ n $ and an integer $ k $ , find the number of indices $ 1 \leq i \leq n - k $ such that the subarray $ [a_i, \dots, a_{ik}] $ with length $ k1 $ (not with length $ k $ ) has the following property:
If you multiply the first element by $ 2^0 $ , the second element by $ 2^1 $ , …, and the ( $ k1 $ )-st element by $ 2^k $ , then this subarray is sorted in strictly increasing order.
More formally, count the number of indices $ 1 \leq i \leq n - k $ such that $ $KaTeX parse error: Cant use function $ in math mode at position 84: …\cdot a_{ik}. $̲ $
输入格式
The first line contains an integer $ t $ ( $ 1 \leq t \leq 1000 $ ) — the number of test cases.
The first line of each test case contains two integers $ n $ , $ k $ ( $ 3 \leq n \leq 2 \cdot 10^5 $ , $ 1 \leq k n $ ) — the length of the array and the number of inequalities.
The second line of each test case contains $ n $ integers $ a_1, a_2, \dots, a_n $ ( $ 1 \leq a_i \leq 10^9 $ ) — the elements of the array.
The sum of $ n $ across all test cases does not exceed $ 2 \cdot 10^5 $ .
输出格式
For each test case, output a single integer — the number of indices satisfying the condition in the statement.
样例 #1
样例输入 #1
6
4 2
20 22 19 84
5 1
9 5 3 2 1
5 2
9 5 3 2 1
7 2
22 12 16 4 3 22 12
7 3
22 12 16 4 3 22 12
9 3
3 9 12 3 9 12 3 9 12样例输出 #1
2
3
2
3
1
0提示
In the first test case, both subarrays satisfy the condition:
$ i1 $ : the subarray $ [a_1,a_2,a_3] [20,22,19] $ , and $ 1 \cdot 20 2 \cdot 22 4 \cdot 19 $ .$ i2 $ : the subarray $ [a_2,a_3,a_4] [22,19,84] $ , and $ 1 \cdot 22 2 \cdot 19 4 \cdot 84 $ .
In the second test case, three subarrays satisfy the condition: - $ i1 $ : the subarray $ [a_1,a_2] [9,5] $ , and $ 1 \cdot 9 2 \cdot 5 $ .
$ i2 $ : the subarray $ [a_2,a_3] [5,3] $ , and $ 1 \cdot 5 2 \cdot 3 $ .$ i3 $ : the subarray $ [a_3,a_4] [3,2] $ , and $ 1 \cdot 3 2 \cdot 2 $ .$ i4 $ : the subarray $ [a_4,a_5] [2,1] $ , but $ 1 \cdot 2 2 \cdot 1 $ , so this subarray doesn’t satisfy the condition.
思路
对原数组进行模拟下标x(2n)x(2~n)x(2 n) 根据题目 若ax−12⋅axa_{x-1}2\cdot a_xax−12⋅ax ∴fx1\therefore f_x1∴fx1 否则,fx0f_x0fx0
对f数组f数组f数组进行前缀和预处理就可以实现O(n)\Omicron(n)O(n)时间复杂度的统计了。
代码实现
#includebits/stdc.h
using namespace std;const int maxn2e510;
int t,n,k,ans;
int a[maxn],f[maxn];
int main(){scanf(%d,t);while(t--){scanf(%d%d,n,k);int op0;ans0;memset(a,0,sizeof(a));for(int i1;in;i){int x;scanf(%d,x);if(2*xop)a[i]1;opx;}for(int i1;in;i){f[i]f[i-1]a[i];if(i-k-10)continue;if(f[i]-f[i-k]k)ans;}printf(%d\n,ans);}return 0;
}