질문 표면 :
제목 설명
높은 어둡고 폭풍우 치는 밤에 폭풍우 치는 밤에 따라, 농부 존 불펜의 지붕, 문이 날아했다. 다행스럽게도, 많은 가축 휴가, 그래서 더 소 살지 않았다. 소는 소 하룻밤이 살고, 다른 옆에 정렬됩니다. 젖소 암소의 일부는, 일부는하지 않습니다. 모든 외양간은 같은 폭을 갖습니다. 문이 누락되어 있기 때문에, 농부 존은 가능한 한 빨리 새 보드 전에 불펜을 건립해야한다. 그의 새로운 목재 공급 업체는 그에게 그가 원하는 어떤 길이를 제공하지만, 인색 공급 업체는 나무의 제한된 수의를 제공 할 수 있습니다. 농부 존은 총 길이를 최소화하기 위해 자신의 나무를 사고 싶어.
주어진다 : 시판 보드의 최대 가능 수를 M (1 <= M <= 50) 전체 외양간 S (1 <= S <= 200), 가축의 수 우사 C (1 <= C < = S) 및 암소 번호 stall_number (1 <= stall_number <= S), 나무의 필요 최소한의 전체 길이를 계산 소 반 전부를 멈춘 우사. 원하는 답으로서 출력 보드의 최소 총 길이.
입력 형식
라인 1 : 기판의 최대 수가 M, S의 총 개수 및 가축 축사 C의 총 수 (공백으로 구분)
두 번째 줄에 C + 1 : 각 행 점유 가축 축사의 수를 나타내는 정수를 포함한다.
출력 형식
하나의 선은 나무의 원하는 최소한의 전체 길이를 나타내는 정수가 포함되어 있습니다.
이 질문은 첫째로 설정할 수 있습니다
목재 조각의 전체를 덮는 것으로 이해 개의 소 각각의 중간 범례 같이 보이드가 m-1 번 끊어 질 수 흘렸다
그러나 필요 특 판정 m>는 제 6 및 제 7 포인트 또는 RE WA로 이어질 때문에 목재 소비보다 나무 필요성 C,
강령
#INCLUDE <알고리즘> #INCLUDE <iostream> #INCLUDE <iomanip> #INCLUDE <CString을> #INCLUDE <cstdio> #INCLUDE <cmath> #INCLUDE <큐> 네임 스페이스를 사용하여 STD, INT의 m, S, C, A [205] , B는 [205], ANS = 0; BOOL CMP (INT의 X, Y의 INT)은 {반환 X> Y} // 내림차순 행 INT 읽기 () {INT X = 0; CHAR CH = getchar가 (); 그동안 (CH <0 || CH> '9.') CH = getchar가 (); 그동안 (CH> = 0 && CH <= '9.') = {X * X + CH 10 '0 '; CH getchar가 = ();} 리턴 X; } 빠른 판독 // INT의 main () { m =) (읽기, S ()가 판독 =; C ()가 판독 =; IF (m> C) {의 printf ( "%의 D를" , c) 0 반환} // 공보 판정 경우 나무 판자 번호 별 소비해야 (I = 1을 인터넷 용;난에 c = <; 내가 ++)는 [I]를 판독 = (); 정렬 (A + 1, A + C + 1); 대해 INT (I = 2; 나는 =에 c <; 내가 ++) [I-1]가 = B A [I] -a [I-1]; // 얻어진 소 소 공극 중간 ANS = A [ C] -a [1] +1; // 초기 전체 피복 종류 (B + 1, B +에서의 C, CMP) // 무효 하강 행 대 (INT I = 1; I <= M- 1; 내가 ++) ANS = ANS -b [I] +1 // 감산 보이드 , ANS)에의 printf ( "%의 D"를, 반환 0; }