욕심 클래스 간격 문제

간격 범위 문제

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 }
코드보기

 

추천

출처www.cnblogs.com/Aaaamber/p/11282946.html