P17085 [COTS 2026] 原子 / Atomi(暂无数据)

题目背景

2s, 512M

题目描述

有 $N$ 个原子排成一排,从左往右依次编号 $1\sim N$。原子 $i$ 质量为 $w_i$,初始移动方向为向左或向右。 所有原子同时开始向其初始方向移动。相邻原子之间的距离相等,并且所有原子都以相同的速率匀速移动。 当质量为 $x$ 和 $y$ 的两个原子碰撞时,会发生核聚变,它们合并为一个质量为 $x + y$ 的新原子。新原子继续向碰撞的两个原子中较重的一个的方向移动。如果它们的质量相等,新原子向右移动。 经过足够长的时间后,将不再发生碰撞。将剩余的原子分为两组:向左移动和向右移动。我们想知道第一组原子的总质量和第二组原子的总质量。 你需要回答 $Q$ 个询问。第 $i$ 个询问给定两个数字 $l_i$ 和 $r_i$,若只观察原子 $l_i, l_i + 1, \dots , r_i$(忽略其他原子)时,两组原子分别的总质量。 对于每个询问,输出最终向左移动的原子的总质量和最终向右移动的原子的总质量。

输入格式

第一行包含一个正整数 $N$($1 \le N \le 3 \cdot 10^5$),表示原子的数量。 接下来 $N$ 行中的第 $i$ 行包含一个正整数 $w_i$($1 \le l_i \le r_i \le N$)和一个字符 $c_i$($c_i\in \{\texttt{L},\texttt{R}\}$),分别表示第 $i$ 个原子的质量和初始方向。字符 $c_i$ 为 `L` 表示原子一开始向左移动,或者为 `R` 表示向右移动。 下一行包含一个正整数 $Q$($1 \le Q \le 3 \cdot 10^5$),表示询问的数量。 接下来 $Q$ 行中的第 $i$ 行包含两个正整数 $l_i$ 和 $r_i$($1 \le l_i \le r_i \le N$),表示第 $i$ 个询问中原子子段的边界。

输出格式

对于每个询问,输出两个整数:最终向左移动的原子的总质量,以及最终向右移动的原子的总质量。

说明/提示

### 样例解释 以下为样例 $1$ 解释。 在第一个询问中,我们观察所有五个原子。第二和第三个原子合并成一个质量为 $6$ 并向左移动的原子,第四和第五个原子合并成一个质量为 $8$ 并向右移动的原子。第一个原子继续向左移动,所以答案是 $11$ 和 $8$。 在第四个询问中,我们观察第三和第四个原子。由于它们向相互背离的方向移动,它们不会相撞,所以答案是 $4$ 和 $7$。 ### 子任务 | 子任务 | 分数 | 限制 | |:---:|:---:|---| | $1$ | $11$ | $N, Q \le 1\,000$ | | $2$ | $9 $| 对于每个询问 $i$,$l_i = 1$。 | | $3$ | $10$ | 初始时恰好只有一个原子向右移动。 | | $4$ | $24$ | 存在 $0 \le k \le N$,使得原子 $1, \dots, k$ 向右移动,而原子 $k + 1, \dots, N$ 向左移动。 | | $5$ | $21$ | $N \le 3 \cdot 10^4$ | | $6$ | $25$ | 无附加限制。 |