아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

경기 부양책

시간 제한5초메모리 제한128 MB

요약
예산 B 안에서 n≤20개의 프로젝트 부분집합을 골라 매년 일자리 목표를 모두 충족시키면서 인프라 이득 합의 최댓값을 구한다.
난이도

보통10점 중 5점

유형
완전 탐색, 구현, 그리디, 배열
정답자
아직 제출이 없습니다

문제

경제 위기의 충격을 완화하기 위해 정부가 대규모 경기 부양책을 통과시켰다. 민간 투자가 위축된 상황에서 정부가 직접 가치 있는 사업에 투자하여 일자리를 만들고 경제 회복을 돕겠다는 것이다. 어떤 사업에 예산을 배정할지는 어려운 결정이다. 사업마다 만들어 내는 일자리 수, 비용, 그리고 남는 사회 기반 시설(인프라)의 크기가 다르기 때문이다. 어떤 사업은 (다리 건설처럼) 즉시 일자리를 만들고, 어떤 사업은 (연구처럼) 몇 년 뒤에야 일자리를 만든다.

각 사업 ii에는 비용 cic_i, 인프라 이득 gig_i, 그리고 앞으로 YY년 동안 해마다 만들어 내는 일자리 수 ji,1,ji,2,…,ji,Yj_{i,1}, j_{i,2}, \ldots, j_{i,Y}가 주어진다. 또한 전체 예산 BB와 연도별 일자리 목표 J1,J2,…,JYJ_1, J_2, \ldots, J_Y가 주어진다.

총비용이 BB를 넘지 않으면서, 매년 tt마다 만들어 내는 일자리의 합이 목표 JtJ_t 이상인 (즉, 모든 tt에 대해 ∑i∈Sji,t≥Jt\sum_{i \in S} j_{i,t} \ge J_t) 사업들의 집합 SS를 고르려 한다. 이러한 집합 가운데 인프라 이득의 합 ∑i∈Sgi\sum_{i \in S} g_i의 최댓값을 구하여라. 예산 안에서 모든 연도의 일자리 목표를 만족하는 집합이 하나도 없다면 그 사실을 출력한다.

입력

첫 줄에 데이터 집합의 개수 KK가 주어진다. 각 데이터 집합은 다음과 같은 형식이다.

  • 첫 줄에 세 정수 nn, YY, BB가 주어진다. nn은 고려하는 사업의 수로 n≤20n \le 20, YY는 내다보는 미래의 햇수로 1≤Y≤501 \le Y \le 50, BB는 전체 예산으로 0≤B≤1090 \le B \le 10^9이다.
  • 다음 줄에 연도별 일자리 목표 J1,…,JYJ_1, \ldots, J_Y를 나타내는 YY개의 정수가 주어진다.
  • 이어지는 nn개의 줄에는 각 사업이 Y+2Y + 2개의 정수로 주어진다. 먼저 그 사업의 연도별 일자리 수 ji,1,…,ji,Yj_{i,1}, \ldots, j_{i,Y}, 그다음 사업의 비용 cic_i, 마지막으로 인프라 이득 gig_i이다.

출력

각 데이터 집합마다 먼저 Data Set x: 형식의 줄을 출력한다. 여기서 x는 그 데이터 집합의 번호(1부터 시작)이다. 다음 줄에는, 예산 안에서 모든 일자리 목표를 만족하는 집합이 없으면 No selection. 을, 그렇지 않으면 가능한 인프라 이득 합의 최댓값을 출력한다. 서로 다른 데이터 집합 사이는 빈 줄로 구분한다.

예제2

  1. 예제 1

    입력
    2
    6 6 100
    2 2 2 2 2 2
    3 0 3 0 3 0 50 100
    1 1 0 0 0 0 20 10
    0 0 1 1 0 0 20 10
    0 0 0 0 1 1 20 10
    0 3 0 3 0 3 55 30
    1 1 1 1 1 1 40 0
    4 2 10
    2 2
    2 1 7 1
    0 1 5 1
    1 1 4 2
    1 0 2 3
    
    예상 출력
    Data Set 1:
    30
    
    Data Set 2:
    No selection.
    
  2. 예제 2

    입력
    1
    3 2 100
    0 0
    1 1 10 5
    2 0 30 7
    0 2 40 9
    
    예상 출력
    Data Set 1:
    21