1 条题解

  • 0
    @ 2025-10-26 14:12:54

    核心思路

    本题的关键在于发现一个重要的数学对称性:当所有长杆在角度空间中均匀分布时,发电效率达到最大值。

    重要观察

    发电效率函数定义为:

    i<jmin(v[i]v[j],50000v[i]v[j])\sum_{i<j} \min(|v[i]-v[j]|, 50000-|v[i]-v[j]|)

    这个函数在角度空间上具有对称性,当所有长杆在 [0,50000)[0, 50000) 区间内均匀分布时,每对长杆形成的角度都尽可能接近 2500025000(即 9090^\circ),从而最大化发电效率。

    核心算法

    1. 排序预处理:将长杆按初始角度值排序
    2. 配对旋转:将排序后的长杆分成前后两半,将后半部分的长杆旋转到与前半部分对应的长杆相隔 2500025000 的位置

    关键公式

    对于排序后的长杆 a[0],a[1],,a[n1]a[0], a[1], \ldots, a[n-1],执行旋转:

    $$\text{rotate}(a[j].\text{id}, (a[i].x + 25000 - a[j].x) \bmod 50000) $$

    其中:

    • i=0,1,,n21i = 0, 1, \ldots, \lfloor \frac{n}{2} \rfloor - 1
    • $j = \lceil \frac{n}{2} \rceil, \lceil \frac{n}{2} \rceil + 1, \ldots, n-1$

    算法优势

    • 最优性:最终配置使得任意两杆角度差尽可能接近 2500025000,这是发电效率函数的极值点
    • 高效性:只需要 n2\lfloor \frac{n}{2} \rfloor 次旋转操作,总操作次数为 O(n)O(n),远低于 2,000,0002,000,000 的限制
    • 单调性:每次旋转都保持或提高发电效率,满足题目约束
    • 1

    信息

    ID
    4164
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者