제목의 의미
상품의 무리가 있습니다, 그것은 판매 컷 - 오프 날짜와 가격을 제공합니다
당신은 최대 소득을, 매일 상품이 판매 선택할 수 있습니다
주제 분석
당신이 분리 된 세트를 선택할 수 있습니다 왜, 내가 시작을 이해하지 못하는
그러나 고가의 제품을 선택하려고 욕심 생각은 문제가되지 않습니다
메인이 상품을 선택하는 것입니다, 상품은 일부 선출 할 수없는 만료 될 수 있습니다
여기, 우리는 수집, 마감에 마감 힙을 분할
우리는 제품의 최대 값을 선택, 최선의 상황은 판매 데드 라인에있다
그러나, 판매 후, 같은 날짜를 말하는 상품이 날 판매 할 수 없습니다
그래서 우리는 알아 첫날 전날의 수집,에 넣어 최신 판매 의 가장 높은 가치 제품을
이것은 욕심 전략이지만, 분리 된 세트의 방법을 사용
주제 코드
사용법 #include <iostream> #INCLUDE <STDIO.H> #INCLUDE < 문자열 .H> #INCLUDE <알고리즘> 사용 스페이스 성병; 타입 정의 긴 긴 LL; CONST의 INT maxn 1E4 + = 7 ; INT F [maxn, N; 구조체 노드 { INT의 P, D; 일} [maxn]; INT GET ( INT의 X) { 경우 (F [X] == - 1 ) 리턴 X; 다른 리턴 F [X] = GET (F [X]); } 부울 CMP (노드 A, 노드 B) { 경우 (AP = BP!) 복귀 AP> BP; 반환 광고 < BD를; } INT 의 main () { 동안 (~는 scanf ( " %의 D ' , N)) { 위해 ( int로 I = 1 ; i가 <= N; 내가 ++ ) (scanf와를 " %의 D % d에 " , 일 [I] .P , 일 [I] · D); 정렬 (일 + 1 , 일 + 1 + N, CMP); memset 함수 (F, - 1 , 를 sizeof(에프)); INT ANS = 0 ; 위한 ( int로 I = 1 ; i가 <= N; 내가 ++ ) { INT t = GET (일 [I] · D); 만약 (t> 0 ) { ANS + = 일 [I] .P; F [t]는 T- = 1 ; } } 의 printf ( " % D \ 없음 " , ANS); } 반환 0 ; }