매일 질문 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 ; }
갱스터의 논문을주세요(어쨌든, 나는이 논문을 무엇을 의미하는지 모른다)