CF2173F Isla's Memory Thresholds

题目描述

我希望有一天,你能与那个你珍惜的人重逢。 —— Plastic Memories 在 Plastic Memories 的世界中,Isla 正在收集 $n$ 个记忆碎片。第 $i$ 个碎片的大小为 $a_i$,且这些大小是非增序排列的,即 $a_1 \ge a_2 \ge \cdots \ge a_n$。 在回收过程中,Isla 会处理一个范围内的碎片,并将它们的大小存储到缓冲区中。当缓冲区中的总大小达到某个给定的阈值 $x$ 时,会发生溢出:此时记录下一份胶囊,并将缓冲区清空为零。 共有 $q$ 个独立的查询,每个查询由三元组 $(l,r,x)$ 描述。对于每个查询,$x$ 表示 Isla 的记忆容量。然后 Isla 会依次收集第 $l$ 到 $r$ 个记忆碎片。任何时刻,当她当前持有的碎片的总大小不少于 $x$ 时,她会完全清空自己的记忆(不留下任何碎片)。你需要判断 Isla 清空记忆的次数,以及她最终持有的碎片大小之和。

输入格式

每个测试包含多组测试数据。第一行包含测试组数 $t$($1 \le t \le 1000$)。接下来是每组测试数据的描述。 每组测试数据的第一行包含两个整数 $n$ 和 $q$($1 \le n, q \le 150{,}000$)——数组 $a$ 的长度和查询数量。 第二行包含 $n$ 个整数 $a_1,a_2,\ldots,a_n$($1 \le a_i \le 10^9$)——碎片的大小。保证 $a_1 \ge a_2 \ge \cdots \ge a_n$。 接下来 $q$ 行,每行包含三个整数 $l, r, x$($1 \le l \le r \le n$,$1 \le x \le 10^9$),表示一个查询。 保证所有测试数据中 $n$ 的总和不超过 $150{,}000$。 保证所有测试数据中 $q$ 的总和不超过 $150{,}000$。

输出格式

对于每组测试数据中的每个查询,输出两整数——Isla 清空记忆的次数,以及她最终持有的碎片大小之和。

说明/提示

令 $\texttt{cnt}$ 表示 Isla 清空记忆的次数,$\texttt{sum}$ 表示她当前持有碎片的总大小。 在第一个测试样例的第一个查询 $(l, r, x) = (1, 3, 10)$: - 从 $\texttt{sum}=0$ 开始; - 加上 $a_1=7 \Rightarrow \texttt{sum}=7$(仍小于 $10$); - 加上 $a_2=5 \Rightarrow \texttt{sum}=12 \ge 10 \Rightarrow \texttt{sum} \gets 0$,$\texttt{cnt} \gets 1$; - 加上 $a_3=5 \Rightarrow \texttt{sum}=5$。 因此,输出 $\texttt{cnt}=1$,$\texttt{sum}=5$。 在第二个测试样例的第五个查询 $(l, r, x) = (2, 5, 3)$: - 从 $\texttt{sum}=0$ 开始; - 加上 $a_2=6 \Rightarrow \texttt{sum}=6 \ge 3 \Rightarrow \texttt{sum} \gets 0$,$\texttt{cnt} \gets 1$; - 加上 $a_3=5 \Rightarrow \texttt{sum}=5 \ge 3 \Rightarrow \texttt{sum} \gets 0$,$\texttt{cnt} \gets 2$; - 加上 $a_4=3 \Rightarrow \texttt{sum}=3 \ge 3 \Rightarrow \texttt{sum} \gets 0$,$\texttt{cnt} \gets 3$; - 加上 $a_5=2 \Rightarrow \texttt{sum}=2$(仍小于 $3$); 因此,输出 $\texttt{cnt}=3$,$\texttt{sum}=2$。 由 ChatGPT 5 翻译