P1661 확산 (+ 이산 세트 바이너리)

제목 설명

도에 도시 된 바와 같이 시점마다 유닛, 4 개 방향에서의 거리를 확산한다.

두 개의 점 A, B에서 E로 언급 통신, (a, b)의 경우, 단지 확산 영역 경우 A, B는 공통이다. 통신 블록의 정의는 U 블록 내의 임의의 두 지점이며, V 경로 (U, A0), E (A0, A1), 즉 확실하게 존재한다, ... E (AK, V). 주어진 평면상의 한 점에 n으로, 그들은 통신 블록을 형성 빠른 시간 무엇인지 물었다.

입력 형식

다수 (N)의 첫번째 행, n 개의 선, 각 광고 포인트 좌표.

[데이터] 스케일

1≤X [I], Y [i]를 ≤50 상기 데이터의 20 %, 1≤N≤5 부합하는 단계;

1≤X [I], Y [i]를 ≤10 ^ 9 상기 데이터 만족 1≤N≤50 100 %이다.

출력 형식

모든 통신 블록의 최초의 시각을 나타내는 숫자가 형성된다.

샘플 입출력

입력 # 1
2 
0 0 
5 5
출력 # 1
5 

솔루션의 개요 :만큼이 같은 점은 수평 + "= 2 * t이 두 점을 만날 것으로부터의 수직 거리를 찾기 위해 통신 블록 먼저 두 개의 분리 된 설정 한 시점이 해결 생각 (곱셈 포인트는 몇 가지 법이 찾을하려고 할 수 있습니다) 라인에

1 #INCLUDE <cstdio>
 2 #INCLUDE <CString을>
 3 #INCLUDE <알고리즘>
 4  #DEFINE의 EPS를 1E-6
 5  이용  스페이스 성병;
6 타입 정의  LL;
7  
8  INT의 N;
9 LL의 X [ 55 ], Y [ 55 ];
10 개 LL의 도착 [ 55 ];
11  
12  LL의 find_root (LL의 X) {
 13      반환 도착 [X] == X X : 도착 [X] = find_root (도착 [X]);
14  }
 15  
16  BOOL확인 (LL NUM) {
 . 17      INT ANS = 0 ;
 18이다      위해 ( INT I = 1. ; I <= N-; I ++) ARR [I] = I]
 . 19       ( INT I = 1. ; I <= N-; I는 ++ ) {
 20는          위해 ( INT의 J = I는 + 1. , J <= N-, J ++ ) {
 21는              IF (ABS (X [I]를 -X- [J]) + ABS (Y [I] -Y [J]) <= 2 * NUM ) { // 이 시간 내에 두 지점 충족시킬 수 민 
22 인                  LL = XX의 ; find_root (I)
 (23)는                  LL = YY의 find_root (J)를,
 (24)                 도착 [XX]을 YY =;    /// 要找根啊
25              }
 26          }
 27      }
 28       ( int로 I = 1 ; I <= N; 내가 ++ ) {
 29 일          경우 (도착 [I] == I) ANS ++ ;
30      }
 31      경우 (ANS == 1 ) 반환  사실 ;
(32)      다른  돌아  거짓 ;
33  }
 34  
35  공극 이분법 () {
 36      LL은 왼쪽 = 0 , 우측 = 1E9 단계;
(37)     ; ANS LL
38      동안 (좌회전 <= 우측) {
 39          LL = 중간 좌측 + 우측 >> 1 ;
40          의 경우 (검사 (MID)) = 오른쪽 미드 1 , ANS = 미드;
41          다른 왼쪽 미드 = + 1 ;
42      }
 43      의 printf ( " % LLD \ 없음 " , ANS);
44  }
 45  
46  INT 의 main () {
 47      는 scanf ( " %의 D ' , N);
(48)      에 대한이 ( int로 I = 1 (는 scanf를 난 ++; i가 N = <)" %의 LLD의 %의 LLD " , X [I], Y [I]);
49      이분법 ();
50      반환  0 ;
51 }
코드보기

 

추천

출처www.cnblogs.com/qq-1585047819/p/11256837.html