https://ac.nowcoder.com/acm/contest/3006/B
問題の意味:訓練基地座標XI、Shidao会場すべてのトレーニングベースの最小の最大値を構築するためのYI(-10000 <= X、Y <= 10000)、x軸は、nがあります。値を検索します。
解決策:答えは、三分の一の答えに近い単一の谷のクリア機能です。
//#含める<ビット/ STDC ++。H> の#include <cstdioを> する#include <CStringの> する#include <cmath> の#include <アルゴリズム> の#include <iostreamの> する#include <ストリング> する#include <stdio.hに> の#include <キュー> の#include <スタック> の#include <マップ> 書式#include <設定> 書式#include <string.hの> の#include <ベクトル> typedefの長い長いLL。 #define INT LL の#define MOD 1000000007 の#define GCD __gcd の#define REPは(i、jは、N)のための(INT iがjは=; I <= N; I ++) 赤の#define(I、N、j)のための(INT I = N; I> = J; i--) の#define ME(x、y)はmemsetの(X、Y、はsizeof(x))を // LL LCM(LL、 一方、(B){IF(B&1)ANS = ANS *%のMOD; //は(-1,11,11- B){LL ANS = 1をquickpowちゃうB >> = 1、A = A *%のMOD;}リターンANS;} // INT euler1(INT X){int型ANS = X;(; iは<= X *; INT iは2 = I ++)のためのIF(X%I == 0){ans- = ANS / I。一方、(X%I == 0)は、x / = I;}もし(X> 1)ans- = ANS / X;戻りANS;} // CONST INT N = 1E7 + 9。INT VIS [n]は、素数[n]は、PHI [N]; int型euler2(INT N){ME(VIS、TRUE); INT LEN = 1;担当者(I、2、N){IF(VIS [I] ){プライム[LEN ++] = I、PHI [i]は= I-1;}の(INT J = 1; J <LEN &&プライム[J] * I <= nであり、j ++){VIS [i *が素数[J] = 0;(I%プライム[j] == 0){;ブレーク; PHI [I *プライム[J] = PHI [I] *プライム[J]}もしそうでなければ{PHI [iが素数[Jを*]] = PHI [I] * PHI [プライム[J]];}}}戻りLEN} の#define INF 0x3f3f3f3f の#define PI ACOS(-1) の#define PII対<整数、整数> の#define Fiの第一 の#define SE第二 # L、中間ルートをLSON定義<< 1つ の#define rsonミッド+ 1、R、根<< #define MP make_pair の#define CIN(X)のscanf( "%のLLD"、&x)は、 名前空間stdを使用。 CONST INT N = 1E7 + 9。 const int型MAXN = 1E5 + 9。 CONSTダブルESP = 1E-6。 PII [MAXN]。 int型のn; ダブルCAL(ダブルX){ ダブルANS = -INF。 担当者(I、1、N){ ANS = MAX(ANS、SQRT(([I] .fi-X)*([I] .fi-x)+ [I] .SE * [I] .SE)); } ANSを返します。 } ボイドは(){解決 CINを>> N。 担当者(I、1、N){ CIN >> [I] .fi >> [I] .SE。 } ダブルL = -1e4、R = 1E4。 一方、(R - L> = ESP){ ダブルRMID = R - (R - L)/ 3、LMID = L +(R - L)/ 3。 IF(CAL(RMID)> = CAL(LMID)){ R = RMID。 }他{ L = LMID。 } } のprintf( "%4lf \ n"、CAL(登録商標)); } 署名されたメイン() { IOS :: sync_with_stdio(偽)。 //cin.tie(0); cout.tie(0)。 // int型トン。 // CIN(T); //一方、(T - ){ )(解きます。 //} }