P12543 [APIO2025] 转杆

题目背景

请注意:本题只支持 C++ 语言提交;你不需要也不应该实现 `main` 函数;你需要在程序开头添加如下内容: ```cpp #include void energy(int n, std::vector v); void rotate(std::vector t, int x); ```

题目描述

Asadullo 是电力与工业优化联盟(Alliance for Power and Industrial Optimization,APIO)的杰出研究员。最近,他研究出利用一种未知材料的发电方法。 这种未知材料不能单独地发电;但如果用这种材料制造出若干极长的杆,这些长杆之间的相互作用能产生电力。 特别地,给定 $n$ 根长杆的属性 $v[0], v[1], \ldots, v[n-1]$。该属性描述了第 $i$ 根长杆放置在与 $x$ 轴正方向逆时针成 $a[i] = 360 \cdot \frac{v[i]}{100000}$ 的角度。这 $n$ 根长杆的发电效率为: $$\sum_{i

输入格式

输出格式

说明/提示

### 例子 #### 例 1 考虑以下函数调用: ```cpp energy(2, [20000, 10000]) ``` 此处,$v = [20000, 10000]$ 且初始的发电效率为 $20000 - 10000 = 10000$。以下是一种可能的场景: 1. 调用 `rotate([0, 1], 8000)`。那么 `v` 变成 `[28000,18000]`。发电效率保持不变。 2. 调用 `rotate([0], 15000)`。那么 `v` 变成 `[43000,18000]`。发电效率变成 $43000 - 18000 = 25000$。 可以证明,对于初始配置,25000 是能实现的最大发电效率。因此,Asadullo 可以停止操作。 #### 例 2 考虑以下函数调用: ```cpp energy(3, [5000, 12500, 37500]) ``` 题面的示例插图描述的就是这个例子,可以证明,初始配置实现的即是最大的发电效率。所以,不需要执行任何操作。 ### 约束条件 - $2 \leq n \leq 100 \, 000$ - 对任意的 $0 \leq i < n$,满足 $0 \leq v[i] \leq 49 \, 999$ - 数组 `v` 的元素不一定互不相同 ### 子任务 1. (5 分) $n = 2$ 2. (11 分) 对于每个 $0 \leq i < n$,均有 $v[i] < 25 \, 000$ 3. (8 分) $n \leq 10$ 4. (15 分) $n \leq 100$ 5. (15 分) $n \leq 300$ 6. (20 分) $n \leq 2000$ 7. (26 分) 没有额外的约束条件。 ### 评测程序示例 评测程序示例按以下格式读取输入: - 第 1 行:$n$ - 第 2 行:$v[0] \, v[1] \ldots \, v[n-1]$ 评测程序示例按以下格式打印输出: - 第 1 行:长杆最终的发电效率 此外,评测程序示例会将你所调用的转动操作的详细信息写入 `log.txt` 文件。