CF1686B Odd Subarrays
题目描述
对于一个数组 $[b_1, b_2, \ldots, b_m]$,定义其逆序对数为满足 $1 \le i < j \le m$ 且 $b_i > b_j$ 的整数对 $(i, j)$ 的数量。我们称数组 $b$ 为奇数组,如果其逆序对数是奇数。
例如,数组 $[4, 2, 7]$ 是奇数组,因为其逆序对数为 $1$;而数组 $[2, 1, 4, 3]$ 不是奇数组,因为其逆序对数为 $2$。
现在给定一个由 $1$ 到 $n$ 的整数组成的排列 $[p_1, p_2, \ldots, p_n]$(每个数恰好出现一次)。你需要将其划分为若干个连续子数组(也可以只划分成一个),使得这些子数组中奇数组的数量尽可能多。
你能得到的奇数组的最大数量是多少?
输入格式
输入的第一行包含一个整数 $t$($1 \le t \le 10^5$),表示测试用例的数量。接下来是每个测试用例的描述。
每个测试用例的第一行包含一个整数 $n$($1 \le n \le 10^5$),表示排列的长度。
第二行包含 $n$ 个整数 $p_1, p_2, \ldots, p_n$($1 \le p_i \le n$,所有 $p_i$ 互不相同),表示排列的元素。
所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。
输出格式
对于每个测试用例,输出一个整数,表示将排列划分为若干连续子数组后,最多能得到多少个奇数组。
说明/提示
在第一个和第三个测试用例中,无论如何划分排列,都不会有奇数组。
在第二个测试用例中,可以将排列划分为 $[4, 3], [2, 1]$ 两个子数组,这两个子数组都是奇数组,因为它们的逆序对数都是 $1$。
在第四个测试用例中,可以将排列划分为一个子数组 $[2, 1]$,它是奇数组。
在第五个测试用例中,可以将排列划分为 $[4, 5], [6, 1, 2, 3]$ 两个子数组。第一个子数组的逆序对数为 $0$,第二个子数组的逆序对数为 $3$,因此它是奇数组。
由 ChatGPT 4.1 翻译