题解:P15452 [JOI 2026 SemiFinal] 宝石商 / Jeweler

· · 题解

思路

  1. 顾客能来的条件。

    顾客 i 能来 \iff [l_i, r_i] \cap [s_j, t_j] \neq \emptyset \iff l_i \le t_jr_i \ge s_j

  2. 答案公式。

\text{ans}[j] = \sum_{\substack{i \\ l_i \le t_j}} C_i \;-\; \sum_{\substack{i \\ l_i \le t_j \\ r_i < s_j}} c_i
  1. 步骤。

    • 第一步:按 l_i 排序顾客,按 t_j 排序查询。双指针维护 l_i \le t_j 的顾客,加入树状数组 \Rightarrow 得到 \text{sum1}[j] = \sum_{l_i \le t_j} c_i
    • 第二步:按 r_i 排序顾客,按 s_j 排序查询。双指针维护 r_i < s_j 的顾客,加入树状数组。
    • 第三步:\text{ans}[j] = \text{sum1}[j] - \text{sum2}[j]
  2. 复杂度。

    时间复杂度 O((N+M) \log N)