P16707 [SEATST 2026] 车辆集结 / Car Gathering
题目描述
数轴上有 $N$ 辆汽车,编号从 $0$ 到 $N - 1$ 。给定它们的位置列表 $X[0], X[1], \ldots, X[N - 1]$ 以及它们每单位的耗油率列表 $C[0], C[1], \ldots, C[N - 1]$ ,每个列表都已按顺序排序。然而,你不知道哪辆汽车对应哪个位置或哪个耗油率。但你知道每辆汽车都有确切的一个位置和确切的一个耗油率。
也就是说,存在两个长度为 $N$ 的排列 $P$ 和 $Q$ ,使得第 $i$ 辆汽车位于位置 $X[P[i]]$ 且其耗油率为 $C[Q[i]]$ 。
::::info[什么是长度为 $N$ 的排列?]{open}
在这道题中,长度为 $N$ 的排列 $P$ 是一个长度为 $N$ 的数组,满足对于所有 $0 \le i \le N - 1$ 都有 $0 \le P[i] \le N - 1$ ,并且对于所有 $0 \le i < j \le N - 1$ 都有 $P[i] \ne P[j]$ 。
例如,$[2, 1, 0]$ 是一个长度为 $3$ 的排列,但 $[1, 2, 3]$ 和 $[2, 0, 2]$ 不是长度为 $3$ 的排列。
::::
给定一个特定的分配 $(P, Q)$ ,我们将所有汽车集结在点 $y$ 的总燃料成本定义为 $\text{cost}(P, Q, y) = \sum_{i=0}^{N-1} |X[P[i]] - y| \times C[Q[i]]$ 。
给定一个 **整数** 点 $p$ ,定义在点 $p$ 的 **最坏情况燃料成本** 为所有可能的分配 $(P, Q)$ 下的最大总燃料成本。也就是说,定义 $\text{worst}(p) = \max \limits_{P, Q} \text{cost}(P, Q, p)$ 。
你的任务是找一个整数点 $p$ ,使得在点 $p$ 的最坏情况燃料成本 $\text{worst}(p)$ 最小化。如果有多个点 $p$ 都能达到相同的 $\text{worst}(p)$ 最小值,你可以返回其中任意一个。
### 实现详情
你需要实现以下函数。
```cpp
int car_gathering(int N, std::vector X, std::vector C)
```
- $N$ :汽车的数量。
- $X$ :一个长度为 $N$ 的数组,描述了按顺序排序的汽车位置。
- $C$ :一个长度为 $N$ 的数组,描述了按顺序排序的汽车油耗率。
- 对于每个测试数据,此函数恰好被调用一次。
- 此函数应返回一个整数 $p$ ,使得在所有整点中,将所有汽车集结在 $p$ 点的最坏情况燃料成本最小。
输入格式
```
N
X[0] X[1] ... X[N - 1]
C[0] C[1] ... C[N - 1]
```
输出格式
一个整数,表示 `car_gathering` 的返回值。
说明/提示
### 样例
考虑以下函数调用:
```cpp
car_gathering(3, [-1, 2, 3], [1, 1, 2])
```
假设 $p = 1$ 。可以证明,分配 $P = [0, 1, 2]$ 和 $Q = [2, 1, 0]$ 会产生 **最坏情况燃料成本** 。也就是说, $\text{worst}(p) = \text{cost}(P, Q, p) = (|-1 - 1| \times 2) + (|2 - 1| \times 1) + (|3 - 1| \times 1) = 7$ 。请注意,可能还有其他 $P$ 和 $Q$ 的分配方式也能产生 **最坏情况燃料成本** ,例如 $P = [2, 1, 0]$ 和 $Q = [2, 1, 0]$ 。
同时也可以证明,整数点 $p = 1$ 是导致 $\text{worst}(p)$ 最小值的点。因此,该函数调用该返回 1。
### 约束
- $1 \le N \le 10\ 000\ 000$ 。
- 对于所有 $0 \le i \le N - 1$ , $-10^9 \le X[i] \le 10^9$ 。
- 对于所有 $0 \le i \le N - 1$ , $0 \le C[i] \le 100$ 。
- 对于所有 $0 \le i < j \le N - 1$ , $X[i] \le X[j]$ 。
- 对于所有 $0 \le i < j \le N - 1$ , $C[i] \le C[j]$ 。
### 子任务
1. ($10$ 分) $N \le 1000$ , $|X[i]| \le 10^3$ 。
2. ($23$ 分) $N \le 100\ 000$ 。
3. ($17$ 分) $N \le 1\ 000\ 000$ 。
4. ($31$ 分) 对于所有 $0 \le i \le N - 1$ , $C[i] \le 1$ 。
5. ($19$ 分) 没有额外的约束。