1 条题解
-
0
B. 美味餐食 详细题解
题目核心理解
有 道前菜,辣度分别为 ;有 道主菜,辣度分别为 。 需要将前菜与主菜两两完美配对,每道菜恰好使用一次。
定义一餐的魅力值为前菜与主菜辣度的绝对差值 。 要求最大化所有配对中最小的魅力值,输出这个最大可能值。
核心思路
1. 关键性质
- 先将数组 、 从小到大排序。
- 最优配对一定可以表示为某种两段式交叉匹配: 选取一个分割位置 ,把最小的 个 配最大的 个 , 剩下较大的 个 配最小的 个 。
- 枚举所有可能的 ,计算每种配对下的最小魅力值,再取最大值即为答案。
2. 匹配规则
对每个枚举的 ():
- 前 个 与 中最后 个匹配,即 ;
- 后 个 与 中前 个匹配,即 。
3. 最优性依据
根据排序不等式与排列引理,任何合法且满足最小魅力 的方案,都可以转化为上述两段式结构,因此只需枚举 即可覆盖所有最优可能。
算法流程
- 对每组测试用例,读入 、数组 、数组 ;
- 将 、 分别升序排序;
- 枚举 从 到 :
- 按上述规则完成配对;
- 计算当前所有配对中最小魅力值;
- 在所有 对应的最小值中,取最大值作为答案输出。
公式与复杂度分析
对给定 ,匹配规则:
$$j= \begin{cases} i+(n-t) & 0\le i<t \\ i-t & t\le i<n \end{cases} $$魅力值:
复杂度
- 排序:
- 枚举 并遍历检查:
- 总时间复杂度:
满足题目限制:所有测试用例的 ,可在时限内轻松通过。
- 1
信息
- ID
- 6581
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者