셋째 (최대 값의 최소화)

https://ac.nowcoder.com/acm/contest/3006/B

문제의 의미는 :있다 N 훈련 기지의 좌표 XI 이순신 (-10000 <= X, Y는 <= 10000)는 석도 장소 모든 교육 자료를 최소의 최대 값을 구축 X는 축. 값을 찾을 수 있습니다.

해결책 : 대답은 가까운 대답 1/3, 단일 계곡의 명확한 기능입니다.

// # 포함 <비트 / 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 개조 1,000,000,007 
#DEFINE GCD __gcd 
#DEFINE 담당자는 (ⅰ, j는, N)에 대한 (INT 난 J를 =; I <= N; I ++) 
레드 #DEFINE (I, N, j)는 대 (INT I = N; I> J =; 난 -) 
#DEFINE ME (X, Y)가 memset (X, Y는 sizeof (X)) 
// LL LCM (LL A,
// LL quickpow (LL의 B, A LL) {LL ANS = 1, 반면 (b) {경우 (B & 1) ANS = ANS는 *는 %의 개조, B >> = 1, A는 *는 %의 개조를 =} 반환 ANS} 
와; // INT euler1 INT (X) {INT ANS는 X = (INT 내가 = 2; 나는 * I <= X; I ++) 경우 (X % I == 0) {ans- = ANS / I; 반면 (X % I == 0) X / = 1} 경우 (x> 1) = ans- ANS / X] 복귀 ANS} 
// CONST INT 1E7 + N = 9; INT 힘 [N], 프라임 [N], 피 [N] INT euler2 (INT N) {ME (힘, TRUE); INT LEN = 1; 렙 (I, 2, N) {경우 (힘 [I] ) {프라임 [LEN ++] = 1, 피 [I] = I - 1}에 대한 (INT J = 1; J <LEN && 프라임 [J] * I <= N; J ++) {힘 [내가 * 프라임 [J] = 0 (I % 프라임 [J] == 0) {(φ)는 [I 프라임 [J를 *] = 피 [I] * 프라임 [J] 바꿈} 만약 그렇지 {피가 [I *를 주요한 [J] = 피 [I]는 * 피 [프라임 [J]를];}}} 리턴 LEN} 
#DEFINE INF 0x3f3f3f3f 
#DEFINE PI의 ACOS (-1) 
#DEFINE PII 쌍 <INT는 INT> 
#DEFINE 인터넷 제 
#DEFINE 번째 SE는 
#을 L 중간 루트를 정의 LSON << 1 
#DEFINE의 rson 미드 + 1, R, 루트 <<
#DEFINE MP make_pair 
#DEFINE CIN (X)는 scanf ( "%의 LLD ', X); 
네임 스페이스를 사용하여 표준; 
CONST INT 1E7 + N = 9; 
CONST INT maxn 1E5 + = 9; 
CONST 이중 ESP = 1E-6; 
PII A [maxn]; 
INT N; 

이중 CAL (두 배) { 
    이중 ANS = -INF; 
    렙 (I, 1, N) { 
        ANS = 최대 (ANS, SQRT ((a [i]를 .fi-X) * (a [i]를 .fi-X) + A [i]를 .se * A [i]를 .se)); 
    } 
    ANS를 반환; 
} 

{) (해결 무효화 
    CIN >> N; 
    렙 (I, 1, N) { 
        CIN >> A [i]를 .fi >> A [i]를 .se; 
    } 
    이중 L = -1e4, R = 1E4; 
    반면 (R - L> = ESP) {  
        이중의 rmid = R - (R - 1) / 3 LMID = L + (R - 1) / 3;
        경우 (CAL (rmid의)> = CAL (LMID)) { 
            R = rmid를;
        사용한다} else { 
            L = LMID; 
        } 
    } 
    의 printf ( "% 4lf \ n.", CAL (R)); 
} 

서명 주 () 
{ 
    IOS :: sync_with_stdio (거짓); 
    //cin.tie(0); cout.tie (0); 
    // INT t; 
    // CIN (t); 
    // (t는 -) {동안 
        해결 (); 
    //} 
}

 

추천

출처www.cnblogs.com/nonames/p/12466859.html