주제 링크 : https://ac.nowcoder.com/acm/contest/1014/A
제목 설명
프레와 무지개 N 새끼 고양이,이 일을 사육, 새끼 고양이는 하이킹. 멀리 통과, 고양이가 마지막 언덕을 올라 갔다,하지만 그들은 지치고 산을 걸어 싶지 않아 (> _ <끈적 거리는 우).
설명을 입력합니다 :
프레와 무지개 그들 케이블을 앉아서하기 위해 돈을 지출했다. 케이블 카 삭도 중량 최대로드 W는 N 튼 중량되어있다 C1, C2 ... CNC_1, C_2 \ DOTS C_N C . (1) , C (2) ... C N을 . 물론, 케이블카에 고양이의 무게되지는 W. 당 초과 케이블 자동차를 임대의 각각은, 프레와 무지개 $ 100 지불해야한다, 그래서 그들은, N의 최소한이 새끼 고양이가 산 아래로 운반 얼마나 많은 달러를 지불 알고 싶어?
출력 설명 :
첫 번째 라인은 두 개의 공간으로 분리 정수, N 및 W. 포함
다음에, 제 i + 1 행 제 i 고양이의 정수를 나타내는 정수 N 라인은 WT CiC_i C 나이 .
예 1
기입
1,996 5
1
2
1994
12
29
수출
2
상당한 당근 주요 링 구덩이은 구덩이은 구덩이의 최소 수에 의해 결정되는 새끼 고양이 등반 복수 무입니다. 그리고 주요 링은 각 구덩이를 들어, 첫 번째 단계는 여러 구덩이 넣어하는보고 검색하고,
새끼 고양이 등반이 번호로 첫 번째 단계 그를 위해 구덩이를 찾기 위해 통과되고, 구덩이의 재 구축 할 필요가 없다.
그것을 치기, 따라서, 그것은 필기 시험을 제출하여 마이너스 분기 (CNT> 입술) (CNT> = 고해상도), 4ms의 약이 300ms에서 전 시간, 경우보다 훨씬 느린 경우 기록 된 것을 언급 할 가치가있다 중요한 것은
적절한 가지 치기가 더 중요하다.
다음과 같이 AC 코드는 다음과 같습니다
. (1) #INCLUDE <cstdio> 2 #INCLUDE <알고리즘> 3. #DEFINE 최대 0x3f3f3f3f 4. 은 USING 스페이스 STD] . 5 . 6 INT의 N-는, W는, RES, ANS [ 20이고 , PIT [ 25 ] . 7 . 8 BOOL CMP ( INT A, INT B) { . 9 복귀 A> B, 10 } . 11 // STEP 현재 프로세스가 여러 고양이 최초로, 스텝 1 고양이 자동차 CNT 처리 복수 12은 보이드 DFS ( INT의 단계 의 INT {) CNT (13)는 IF (CNT > =RES) 14 리턴 ; 15 IF 단계 (N - == + 1이다. ) { 16 RES = 분 (RES, CNT) (17). 창 ; 18이다 } (19). (20)가 // 고양이의 종래의 공정을 찾고 차 자동차 (21) 위한 ( INT I = 1. , I는 = CNT를 <; I는 ++ ) { 22은 IF (PIT [I] + ANS [STEP] <= W) { 23 인 PIT [I] + = ; ANS [STEP] 24 DFS (스텝 + . 1 , CNT) (25)는 [I] PIT - = 된 ANS [STEP] 26 인 } 27 } 28 //는 종래의 자동차 새에 적합한 차량을 발견하고으로 고양이 29 PIT [CNT + 1. =] ANS [STEP] 30 DFS (+ STEP . 1 , CNT + . 1 ) (31)이다 } 32 33는 INT 본체 ( 공극 ) (34)가 { 35 는 scanf ( " %의 D %의의 D " , 및 N-, ) W, 36 대 ( INT I = 1. ; I <= N-; I는 ++ ) 37 는 scanf ( " % D " ,ANS [I]); 38 정렬 (ANS + 1 , ANS + 1 + N, CMP); 39 입술 = 최대; 40 DFS ( 1 , 1 ); 41 의 printf ( " % D \ 없음 " , 해상도); 42 43 복귀 0 ; 44 }