套路

绝对值化为两支取大

∣u∣=max⁡(u, −u)|u|=\max\left(u,\,-u\right),于是含一个绝对值的表达式就是两条曲线的**上包络**;两支都是直线时,它在任一闭区间上的最大值一定落在**区间端点**上,只需比两个数。

那一步改写

∣u∣=max⁡(u, −u)\left|u\right|=\max\left(u,\,-u\right)

于是

∣t−a∣+a=max⁡( t−a+a, a−t+a )=max⁡(t, 2a−t)\left|t-a\right|+a=\max\left(\,t-a+a,\ a-t+a\,\right)=\max\left(t,\ 2a-t\right)

右边两支都是 tt 的一次函数:一条斜率 +1+1、一条斜率 −1-1,关于直线 t=at=a 互为镜像。 原来那个带绝对值的 V 形,就是这两条直线里较高的那一条。

为什么值得这么写

最大值的位置一眼就定了。 一次函数在闭区间上的最值必在端点; 若干个一次函数取最大,得到的仍是凸函数,凸函数在闭区间上的最大值也必在端点。所以

max⁡t∈[m,M]max⁡(t, 2a−t)=max⁡(M⏟y=t 在右端最高, 2a−m⏟y=2a−t 在左端最高)\max_{t\in[m,M]}\max\left(t,\,2a-t\right) =\max\Bigl(\underbrace{M}_{y=t\ \text{在右端最高}},\ \underbrace{2a-m}_{y=2a-t\ \text{在左端最高}}\Bigr)

——不必讨论 aa 落在区间的哪一边。按定义分段讨论(a<ma<m / m≤a≤Mm\le a\le M / a>Ma>M)当然也对, 但那是三类,这里是两个数比大小。

用在哪儿

  • 含参绝对值函数在闭区间上的最值 / 值域;
  • 「最大值等于某个数,求参数范围」——把最大值写成 max⁡(⋅,⋅)\max(\cdot,\cdot),条件立刻变成两个不等式;
  • 多个绝对值相加(∣x−1∣+∣x−3∣|x-1|+|x-3| 这类)同样是分段线性的凸函数,最大值仍在端点,最小值则可能在折点上。

两处当心

  • 最大值在端点,最小值不一定。 凸函数的最小值可能落在折点 t=at=a 处(这里的最小值就是 aa, 当 a∈[m,M]a\in[m,M] 时取到)。这一条只能用来找最大值。
  • 区间必须是闭的、有界的。 端点开或区间无界时「最值在端点」就不成立,只能谈上确界。

共 7 道题考到本条。