2025.06.28 CW 模拟赛 C. 计算几何
C. 计算几何
题目描述
在数轴上垂直放置着 \(n\) 条线段,第 \(i\) 条线段所在直线经过数轴上 \(w_i\) 的位置,高度为 \(h_i\)。保证 \(w_i\) 严格递增。
给定 \(q\) 组询问,每次询问给出 \(1 \leq l < r \leq n\),要求:
在编号 \(l\) 到 \(r\) 的线段中选取两条不同的线段 \(i\) 和 \(j\)(\(l \leq i < j \leq r\)),计算顺时针连接四个端点构成的图形(梯形或平行四边形)的面积的两倍值。形式化地,需要求出所有满足条件的 \((i,j)\) 对中:\((w_j - w_i)(h_i + h_j)\) 的最小值,并输出该最小值。
思路
由于 \(w_i\) 是递增的, 我们可以观察到这样一个性质: 对于一个二元组 \((i, j)\), 如果存在 \(i < k < j\) 并且 \(h_k \le \max(h_i, h_j)\), 则 \((i, j)\) 是一定不优的.
更形式化一点的, 我们定义 \(L_i = \max\{ j \mid j < i \and h_j \le h_i \}, R_i = \{ j \mid j > i \and h_j \le h_i \}\), 则对于点 \(i\) 来讲最优答案只可能是 \((L_i, i)\) 或 \((i, R_i)\).
对于维护 \(L_i, R_i\), 可以考虑将所有点按 \(h_i\) 从小到大插入, 每次插入后只有与其相邻的两个点可能作为答案, 所以总的二元组是 \(\mathcal{O}(n)\) 级别的.
将询问离线后树状数组维护即可, 复杂度 \(\mathcal{O}((n + q) \log n)\).
总结
往往需要根据题目条件动手模拟并推出一些好的性质.

浙公网安备 33010602011771号