Opentrains 1519 G——最小圆覆盖

题目

给出 $n$ 个定义在区间 $[0, 1]$ 上的一次函数 $f_i(x) = a_ix+b_i$,定义两个函数的距离为:

$$dist(f,g) = left(max_{0leq ileq T} (f(i)-g(i)) ight)^2 + left(min_{0leq ileq T}(f(i)-g(i)) ight)^2$$

你现在要找一个一次函数 $g(x) = cx+d$,使得下面的值最小:

$$max_{1leq ileq n} dist(f_i, g)$$

你只需要输出最小值就可以了。($1leq n leq 200000$)

分析

一次函数减一次函数仍是一次函数,所以最值在端点取得。(画图也能发现)

即 $dust(f, g) = left(f(0)-g(0) ight)^2 + left(f(T) - g(T) ight)^2$

这是很熟悉的点到点的距离公式,如果我们把 $left(f(0), f(T) ight)$,共有 $n$ 个点,$dist(f_i, g)$ 即为 $left(g(0), g(T) ight)$ 到第 $i$ 个点的距离。

要求的就是到 $n$ 个点的最大距离的最小值,转化为求最小圆覆盖中的圆的半径。

参考链接: https://yang2002.github.io/2019/04/21/最小圆覆盖学习笔记/

原文地址:https://www.cnblogs.com/lfri/p/11605120.html