간격 범위 문제
N 구간 [AI, 바이] 행 번호를 폐쇄하여, 상기 선택 간격은 세그먼트 [S, T]를 지정할 수만큼 적은 덮여있다.
사전에 읽기, 바로 지금 덜 왼쪽 포인트를 충족하기 위해 찾기 시작, 무엇을 왼쪽 지점에 따라 대량 주문 작은에서, 범위의 외부 무시 우측 포인트 범위를 커버하고, 간격의 오른쪽 끝 지점 [더 혀 회오리, 내가 할 무슨 ...... 말을 하면 출력 해결책을 찾을 수없는 경우
풀
1 #INCLUDE <. 비트 / stdc ++ H> 2 사용 스페이스 성병; 3 타입 정의 긴 긴 LL; 4 #DEFINE의 N 1,000,005 5 인라인 INT의 판독 () { 6 INT S = 0 , w = 1 ; 7 숯 CH = getchar가 (); 8 동안 (CH2 < ' 0 ' || CH> ' 9 ' ) { 경우 (CH2 == ' - ' ) w = - 1 ; CH = getchar가 ()} (9) 동안 (CH2> = ' 0 ' && CH <=에서 ' 9 ' ) {(S)가 S * 10 + CH- ' 0 ' , CH = getchar가 ();} 10 리턴 S * w; 11 } 12 구조체 P { 13 INT의 A, B; 14 친구 부울 연산자 < (PX, PY) 15 { 16 일 경우 (XA == 나중에) 반환 XB < YB; 17 리턴 XA < 나중에; 18 } 19 } QY [N]; 20 INT 의 main () 21 { 22 INT N = (S = 판독) (판독), t)이 (판독 = CNT = 0 ; 23 일 동안 (N-- ) 24 { 25 INT X = 판독 (), Y가 = 판독 (); 26 의 경우 (x> t || Y <S) 계속 ; 27 QY의 [++ CNT] = .A의 X, QY [CNT] .B = y는; 28 } 29 정렬 (QY + 1 , + QY CNT + 1 ); 30 INT 지금가 S, I = 1 , ANS = 0 ; 31 일 동안 (지금 <t) 32 { 33 ANS ++ ; 34 INT의 KK = 이제; 35 대 (; QY [I] .A <= KK && 나 CNT를 <=, 내가 ++ ) 36 지금 = 최대 (지금 QY의 [를 I] .B); (37) 만약 {COUT << (지금 KK && KK <== t 없음) " 해결책 가능 \ n ' ; 침입 } 38 } 39 의 경우 (현재> = t) COUT << ANS << ENDL 단계; 40 }
유사하게, 물 전처리는 확인으로 적은 폭보다 직경에서 직경 발행 덮는
간격 문제를 교차하지 않습니다
작품의 n 개의 용어가 있는데, 각각 각 작업에 시간시를 시작 TI 시간이 종료됩니다. 당신의 목표는 다음 작업에 참여 가능한 한 많이 참여 거기에 참여할 수있는 얼마나 많은까지 작업하는 것입니다?
쓰기 시간이 너무 오래,하지만 여전히 읽을 수
직접 부착
1 #INCLUDE <iostream> 2 #INCLUDE <알고리즘> 3 사용 스페이스 성병; 4 #DEFINE MAX 100005 5 구조체 (P) { 도 6 의 INT 이순신 ER; 7 } QY [MAX]; 8 부울 CMP (PA, PB) 9 { 10 반환 a.er < b.er; 11 } 12 INT의 주 () 13 { 14 INT N; 15 일 동안 (CIN >> N && N) 16 { 17 대 ( INTI = 0 ; I <N은, 내가 ++) CIN >> QY [I] .yi; (18) 에 대한이 ( 값 int = 1을 0 ; i가 ++] i가 N <) CIN >> QY를 [I] .ER; 19 정렬 (QY, QY + N, CMP); 20 INT ANS = 0 , t = 0 ; (21) 에 대한이 ( 값 int = 1을 0 ; i가 N <; 내가 ++ ) (22) 의 경우 (t < QY [I] .yi) 23 { 24 t = 용의 QY [I] .ER; 25 ANS ++ ; 26 } 27 COUT << ANS << ENDL; 28 } 29 }
사이트 문제의 간격 선택
인터벌 [AI, BI는 상기 N의 X 축 폐쇄 주어 각 섹션은 적어도 하나 개의 폐쇄 시점 (동일해도 다른 부분에 포함되는 점)이되도록, 적은 점을 선택한다.
아래에 이르기까지 제 구간의 마지막 지점을 정렬 한 후,이 간격은 시청하지 않는 점을 포함하는, ANS = 1, 그 포인트 [이 때의 오른쪽 끝 점이 포함되지 않는 범위의 최초 발생에 업데이트되는 것을 I 주위 ...... .
1 #INCLUDE <. 비트 / stdc ++ H> 2 사용 스페이스 성병; 3 타입 정의 긴 긴 LL; 4 #DEFINE의 N 1,000,005 5 인라인 INT의 판독 () { 6 INT S = 0 , w = 1 ; 7 숯 CH = getchar가 (); 8 동안 (CH2 < ' 0 ' || CH> ' 9 ' ) { 경우 (CH2 == ' - ' ) w = - 1 ; CH = getchar가 ()} (9) 동안 (CH2> = ' 0 ' && CH <=에서 ' 9 ' ) {(S)가 S * 10 + CH- ' 0 ' , CH = getchar가 ();} 10 리턴 S * w; 11 } 12 구조체 P { 13 INT의 A, B; 14 친구 부울 연산자 < (PX, PY) 15 { 16 일 경우 (XB == YB) 복귀 XA> 나중에; 17 창 XB < YB; 18 } 19 } QY [N]; 20 INT 의 main () 21 { 22 INT의 t = ) (판독; (23) 에 대한이 ( int로 I = 0 QY [I] .A는 (판독 =) QY [I] = .B가 나는 ++; 나는 t를 <가) ) (판독; 24 정렬 (QY, QY + t); 25 INT의 노드 QY = [ 0 ] .B, ANS = 1 ; (26) 에 대한이 ( 값 int = 1을 1 ; 나는 <t를, 난 ++ ) (27) 의 경우 (QY [I] .A> 노드) 노드 = QY [I] .B, ANS ++ ; 28 COUT << ANS << ENDL; 29 }