문제에 루오 구 P2038 무선 송신기 사이트 네트워크 솔루션

매일 질문 day9 펀치

분석

이 질문은 아날로그, 0 ~ 128 두 (1 ~ 128 노트되지 않음) 사이클 열거 광장의 중심점이 사각형 경계가 결정하고, 다음과 같은 공공 장소에서 사이클의 수를 열거.

시간 복잡도 <O (128 × 160 ² ²) = O (419,430,400) 상 허용

사용법 #include <iostream> 
#INCLUDE <cstdio> 
#INCLUDE <CString을> 
#INCLUDE <알고리즘>
 #DEFINE maxn 128 + 10
 이용한  스페이스 성병; 
인라인 INT의 판독 () 
{ 
    INT (X) = 0 ;
    부울 F = 1 ;
     C = getchar가 ();
     (;! isdigit에 (c) C = getchar가 ()) 경우, (c == ' - ' ) F = 0 ;
     (; isdigit에 (c) C = getchar가 ()) = X (X << 3 ) + (X << 1 ) + C- '0 ' ;
    만약 (f)에 복귀 X;
    반환  0 - X; 
} 
인라인 공극 쓰기 ( INT의 X) 
{ 
    경우 (X < 0 ) {putchar ( ' - ' ) = X - X}
     경우 (x> 9 ) 기록 (X / 10 ); 
    putchar (X의 % 10 + ' 0 ' ); 
} 
INT의 D, N;
INT의 맵 [maxn] maxn];
INT ans_num, ans_sum = - 1 ;
INT 의 main () 
{ 
    memset 함수 (MAP, 0 , 는 sizeof (MAP)); 
    D = 판독 (); 
    N = 판독 ();
    위한 ( int로 I = 1 ; i가 N = <; 내가 ++ ) 
    { 
        INT (X) =) (읽기, Y는, k는 =) (= 판독 판독 (); 
        [X] [Y] 매핑 = K 단계; 
    } 
    에 대해 ( int로 I = 0 ; I는 <= 128 ; I ++ )
          ( INT J = 0 ; J <= 128 ; J ++ ) 
        {
            INT의 XI = 0 , 이순신 = 0 , XJ = 0 , YJ = 0 , CNT = 0 ;
            만약 (ID < 0 ) XI = 0 ;
            다른 XI = I- D;
            있는 경우 는 (i + D> 128 ) 이순신 = 128 ;
            다른 이순신 = 나 + D를; 
            경우 (JD < 0 ) XJ = 0 ;
            다른 XJ = J- D;
            만약 (j + 용의 D> 128 ) YJ = 128 ;
            다른 YJ = + j 개의D; 
            위한 ( int로 A =의 X를, 그것은 <= Y 그것은 ++ )
                  ( INT의 X = J J ++; J <= VJ ) 
                { 
                    CNT + = [을] 맵 [J]; 
                } 
            인 경우 (CNT> ans_sum) 
            { 
                ans_sum = CNT; 
                ans_num = 1 ; 
            } 
            그렇지 않은  경우 (CNT == ans_sum) ans_num ++ ; 
        } 
    (ans_num를) 쓰기; 
    의 printf ( "  " );
    (ans_sum) 물품; 
    반환  0 ; 
}

 갱스터의 논문을주세요(어쨌든, 나는이 논문을 무엇을 의미하는지 모른다)

추천

출처www.cnblogs.com/handsome-zyc/p/11517560.html