1 条题解

  • 0
    @ 2026-4-19 13:43:08

    B. 美味餐食 详细题解

    题目核心理解

    nn 道前菜,辣度分别为 aia_i;有 nn 道主菜,辣度分别为 bib_i。 需要将前菜与主菜两两完美配对,每道菜恰好使用一次。

    定义一餐的魅力值为前菜与主菜辣度的绝对差值 aibj|a_i - b_j|。 要求最大化所有配对中最小的魅力值,输出这个最大可能值。


    核心思路

    1. 关键性质

    • 先将数组 aabb 从小到大排序
    • 最优配对一定可以表示为某种两段式交叉匹配: 选取一个分割位置 tt,把最小的 ttaa 配最大的 ttbb, 剩下较大的 ntn-taa 配最小的 ntn-tbb
    • 枚举所有可能的 tt,计算每种配对下的最小魅力值,再取最大值即为答案。

    2. 匹配规则

    对每个枚举的 tt0tn0\le t\le n):

    • ttaia_ibb最后 tt匹配,即 aibi+(nt)a_i \leftrightarrow b_{i+(n-t)}
    • ntn-taia_ibbntn-t匹配,即 aibita_i \leftrightarrow b_{i-t}

    3. 最优性依据

    根据排序不等式与排列引理,任何合法且满足最小魅力 k\ge k 的方案,都可以转化为上述两段式结构,因此只需枚举 tt 即可覆盖所有最优可能。


    算法流程

    1. 对每组测试用例,读入 nn、数组 aa、数组 bb
    2. aabb 分别升序排序;
    3. 枚举 tt00nn
      • 按上述规则完成配对;
      • 计算当前所有配对中最小魅力值
    4. 在所有 tt 对应的最小值中,取最大值作为答案输出。

    公式与复杂度分析

    对给定 tt,匹配规则:

    $$j= \begin{cases} i+(n-t) & 0\le i<t \\ i-t & t\le i<n \end{cases} $$

    魅力值:

    val=aibjval = |a_i - b_j|

    复杂度

    • 排序:O(nlogn)O(n\log n)
    • 枚举 tt 并遍历检查:O(n2)O(n^2)
    • 总时间复杂度:O(n2)O(n^2)

    满足题目限制:所有测试用例的 n225106\sum n^2 \le 25\cdot 10^6,可在时限内轻松通过。

    • 1

    信息

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