CF1341B Nastya and Door
题目描述
2 月 14 日,Denis 决定送给 Nastya 一个情人节礼物,他想不出更好的主意,于是在门上画了一个巨大的红心,长度为 $k$($k \ge 3$)。Nastya 对这个礼物感到非常困惑,于是她决定把门拆了,把它扔到山上。
山脉由一个从左到右的高度序列 $a_1, a_2, \dots, a_n$ 描述($k \le n$)。保证相邻的高度不相等(即对于所有 $1 \leq i \leq n-1$,都有 $a_i \ne a_{i+1}$)。
对于区间 $[l, r]$(从 $l$ 到 $r$),山峰定义为所有满足 $l < i < r$,且 $a_{i-1} < a_i$ 且 $a_i > a_{i+1}$ 的下标 $i$。需要注意的是,区间的边界 $l$ 和 $r$ 不是山峰。例如,如果 $n=8$ 且 $a=[3,1,4,1,5,9,2,6]$,那么区间 $[1,8]$ 上只有两个山峰(下标为 $3$ 和 $6$),而区间 $[3,6]$ 上没有山峰。
为了拆门,Nastya 会把门扔到长度为 $k$ 的连续山脉区间 $[l, l+k-1]$ 上($1 \le l \le n-k+1$)。当门碰到山峰时会断成两部分,这些部分会继续分别下落并在碰到山峰时继续断开,如此反复。形式化地说,门最终会被分成 $p+1$ 部分,其中 $p$ 是区间 $[l, l+k-1]$ 上的山峰数量。
Nastya 想让门尽可能多地碎成碎片。请帮她选择一个山脉区间 $[l, l+k-1]$,使得该区间内的山峰数量最大。如果有多个最优区间,Nastya 希望选择左端点 $l$ 最小的那个。
形式化地说,你需要选择一个区间 $[l, l+k-1]$,使得其中的山峰数量最大。在所有这样的区间中,输出左端点 $l$ 最小的那个。
输入格式
第一行包含一个整数 $t$($1 \leq t \leq 10^4$),表示测试用例的数量。接下来是每个测试用例的描述。
每个测试用例的第一行包含两个整数 $n$ 和 $k$($3 \leq k \leq n \leq 2 \cdot 10^5$),分别表示山的数量和门的长度。
每个测试用例的第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($0 \leq a_i \leq 10^9$,$a_i \neq a_{i+1}$),表示山的高度。
保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。
输出格式
对于每个测试用例,输出两个整数 $t$ 和 $l$,分别表示门最多可以被分成的部分数,以及对应的长度为 $k$ 的区间的左端点。
说明/提示
在第一个样例中,应选择从 $2$ 到 $7$ 的山脉区间。在该区间内,下标 $3$ 和 $6$ 是山峰,因此答案为 $3$(只有 $2$ 个山峰,所以门会被分成 $3$ 部分)。不难发现,区间 $[1, 6]$ 和 $[3, 8]$ 都不合适,因为它们分别只有 $1$ 个山峰(对于第一个区间,下标 $6$ 不是山峰,对于第二个区间,下标 $3$ 不是山峰)。
在第二个样例中,应选择从 $2$ 到 $4$ 的山脉区间。在该区间内,下标 $3$ 是山峰,因此答案为 $2$(只有 $1$ 个山峰,所以门会被分成 $2$ 部分)。
在第三个样例中,应选择从 $1$ 到 $4$ 的山脉区间。在该区间内,下标 $3$ 是山峰,因此答案为 $2$(只有 $1$ 个山峰,所以门会被分成 $2$ 部分)。可以看到,在区间 $[2, 5]$、$[4, 7]$ 和 $[5, 8]$ 上,山峰数量也是 $1$,但这些区间的左端点都大于 $[1, 4]$,所以它们不是正确答案。
由 ChatGPT 4.1 翻译