P15133 [ROIR 2026] 最后的滑动窗口问题
题目描述
考虑一个数字数组 $b_1, \dots, b_m$。该数组上长度为 $k$($k \le m$)的滑动窗口是指所有长度为 $k$ 的子段,即 $\{b_1, \dots, b_k\},$ $\{b_2, \dots, b_{k + 1}\},$ $\dots,$ $\{b_{m-k+1}, \dots, b_m\}$。
给定一个长度为 $n$ 的数字数组 $a_1, \dots, a_n$。回答关于该数组的 $q$ 个查询,查询形式如下:对于给定的 $l$、$r$、$k$,找出子段 $\{a_l, \dots, a_r\}$ 上所有长度为 $k$ 的滑动窗口的最小值之和。
输入格式
输入的第一行包含两个整数 $n$ 和 $q$($1 \le n, q \le 100\,000$)—— 数组的长度和查询的数量。
第二行包含 $n$ 个整数 $a_1, \dots, a_n$($1 \le a_i \le 10^9$)—— 数组中数字的值。
接下来的 $q$ 行包含查询。第 $i$ 行给出三个整数 $l_i$、$r_i$ 和 $k_i$($1 \le l \le r \le n$,$1 \le k \le r - l + 1$)—— 第 $i$ 个查询的子段左右边界以及滑动窗口的长度。
输出格式
输出 $q$ 行,每行包含对应查询的答案。第 $i$ 行输出一个数字 —— 子段 $\{a_{l_i}, \dots, a_{r_i}\}$ 上所有长度为 $k_i$ 的滑动窗口的最小值之和。
说明/提示
| 子任务 | 分值 | 额外限制 | 依赖子任务 |
|:-:|:-:|:-:|:-:|
| 1 | 6 | $n, q \le 300$ | |
| 2 | 12 | $n, q \le 4000$ | 1 |
| 3 | 8 | $n, q \le 10\,000$ | 1–2 |
| 4 | 11 | $n \le 4\,000$ | 1–2 |
| 5 | 10 | 所有查询中的 $k_i$ 相等 | |
| 6 | 14 | $a_i \le 2$ | |
| 7 | 7 | $a_i \le 20$ | 6 |
| 8 | 15 | $l_i = 1, r_i = n$ | |
| 9 | 17 | 无额外限制 | 1–8 |