https://ac.nowcoder.com/acm/contest/3006/B
El significado de problemas: hay N base de entrenamiento, las coordenadas xi, yi (-10000 <= x, y <= 10.000), el eje X para construir un valor máximo de mínimo lugar Shidao toda la base de formación. Encontrar el valor.
Solución: La respuesta es una función clara de solo valle, cerca de un tercio de la respuesta.
// # incluir <bits / STDC ++. h> #include <cstdio> #include <cstring> #include <cmath> #include <algoritmo> #include <iostream> #include <string> #include <stdio.h> #include <cola> #include <pila> #include <mapa> #include <set> #include <string.h> #include <vector> typedef largo largo ll; #define int ll #define mod 1000000007 #define gcd __gcd #define rep (i, j, n) for (int i = j; i <= n; i ++) #define rojo (i, n, j) for (int i = n; i> = j; i--) #define mE (x, y memset) (x, y, sizeof (x)) // ll lcm (ll a, // ll quickpow (ll a, ll b) {ll ans = 1, mientras que (b) {if (b & 1) ans = ans * a mod%; b >> = 1, a = a * a mod%;} return ans;} // int euler1 (int x) {int ans = x; for (int i = 2; i * i <= x; i ++) si (x% i == 0) {Respuesta-= ans / i; mientras que (x% i == 0) x / = i;} if (x> 1) Respuesta-= American National Standard / x; ans de retorno;} // const int N = 1E7 + 9; int VIS [n], el primer [n], phi [N]; int euler2 (int n) {ME (vis, true); int len = 1; rep (i, 2, n) {if (vis [i] ) {prime [len ++] = i, phi [i] = i-1;} for (int j = 1; j <len && prime [j] * i <= n; j ++) {vis [i * prime [j]] = 0; si (% prime i [j] == 0) {phi [i * prime [j]] = phi [i] * prime [j]; break;} else {phi [i * prime [j]] = phi [i] * phi [prime [j]];}}} len retorno} #define INF 0x3f3f3f3f #define acos PI (-1) #define pii par <int, int> #define fi primera #define SE segundo # definir LSON l, mediados, raíz << 1 #define rson mediados + 1, r, raíz << #define mp make_pair #define cin (x) scanf ( "% LLD", y x); using namespace std; int const N = 1E7 + 9; const int maxN = 1e5 + 9; const doble esp = 1e-6; Pii un [maxN]; int n; doble cal (doble x) { doble ans = -INF; rep (i, 1, n) { ans = max (ans, sqrt ((a [i] .fi-x) * (a [i] .fi-x) + a [i] .es * a [i] .es)); } Ans regresar; } Anular solve () { cin >> n; rep (i, 1, n) { cin >> a [i] .fi >> a [i] .es; } Doble l = -1e4, r = 1E4; mientras que (r - l> = esp) { doble rmid = r - (r - l) / 3, LMID = l + (r - l) / 3; si (cal (rmid)> = cal (LMID)) { r = rmid; } else { l = LMID; } } Printf ( "% 4LF. \ N", cal (r)); } Firmados main () { ios :: sync_with_stdio (false); //cin.tie(0); cout.tie (0); // int t; // cin (t); // tiempo (t -) { solve (); //} }