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

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

시추 장비 배치

면접 대비

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

요약
n개의 유전, 유전당 최대 투자액 m, 총 예산 B가 주어질 때 각 유전에 투자할 금액을 정해 얻는 석유량의 합을 최대로 만든다.
난이도

보통10점 중 5점

유형
동적 계획법, 배열, 구현, 완전 탐색
정답자
아직 제출이 없습니다

문제

기름이 어디에 있는지 이미 알아냈고, 나아가 각 위치에 기름이 얼마나 있는지까지 알고 있다고 하자. 이제 남은 질문은 시추 장비(rig)를 어디에 배치할 것인가이다. 장비가 폭발한 뒤 최대한 많은 기름을 뽑아내는 것이 목표이며, 이는 생각만큼 단순하지 않다.

문제를 다음과 같이 모델링한다. 개발 대상이 될 수 있는 유전이 nn개 있다(1≤n≤1001 \le n \le 100). 각 유전에 대해 백만 달러 단위로 00부터 mm까지의 금액을 투자할 수 있다(mm은 한 유전에 투자할 수 있는 최대 금액이다). 각 유전 ii(1≤i≤n1 \le i \le n)와 각 투자 금액 j∈{0,1,2,…,m}j \in \{0, 1, 2, \dots, m\}에 대해, 표 a[i,j]a[i, j]는 그때 얻는 기름의 양(음이 아닌 실수)을 나타낸다. 표의 값은 jj에 대해 단조 비감소한다(돈을 더 쓰면 최소한 이전만큼의 기름은 얻는다). 그 밖에는 임의의 값일 수 있다. 시추에 쓸 수 있는 전체 예산은 정수 BB이며 0≤B≤1000 \le B \le 100이다(역시 백만 달러 단위). 주어진 예산으로 뽑아낼 수 있는 기름의 최대 총량을 구하라.

입력

첫 줄에는 데이터 집합의 개수 KK가 주어지고, 이어서 KK개의 데이터 집합이 다음 형식으로 주어진다.

각 데이터 집합의 첫 줄에는 세 정수 nn, mm, BB가 주어진다. 각각 유전의 개수, 한 유전당 최대 투자 금액, 전체 예산이다.

이어서 nn개의 줄이 주어지며, 각 줄에는 m+1m + 1개의 음이 아닌 실수가 있다. ii번째 줄의 jj번째 수(j=0,1,…,mj = 0, 1, \dots, m)는 ii번째 유전에 jj백만 달러를 투자했을 때 뽑아낼 수 있는 기름의 양이다.

출력

각 데이터 집합에 대해, 한 줄에 Data Set x:를 출력한다(xx는 그 데이터 집합의 번호). 다음 줄에는 주어진 조건에서 뽑아낼 수 있는 기름의 최대 총량을 소수점 아래 둘째 자리까지 반올림하여 출력한다. 서로 이웃한 두 데이터 집합 사이에는 빈 줄을 하나 넣는다.

예제6

  1. 예제 1

    입력
    1
    4 5 6
    0 2.3 2.3 2.3 2.3 2.3
    0 0 0 0 0 4.1
    0 1.0 2 3.0 4.0 5
    0 0 2.3 2.3 2.3 3.9
    
    예상 출력
    Data Set 1:
    7.60
    
  2. 예제 2

    입력
    1
    2 3 0
    0 1 2 3
    0 5 6 7
    
    예상 출력
    Data Set 1:
    0.00
    
  3. 예제 3

    입력
    1
    2 3 0
    1.5 2.0 2.5 3.0
    0.5 1.0 1.5 2.0
    
    예상 출력
    Data Set 1:
    2.00
    
  4. 예제 4

    입력
    1
    3 0 5
    2.25
    3.10
    0.65
    
    예상 출력
    Data Set 1:
    6.00
    
  5. 예제 5

    입력
    1
    1 4 3
    0 1.1 2.2 3.3 4.4
    
    예상 출력
    Data Set 1:
    3.30
    
  6. 예제 6

    입력
    2
    1 2 2
    0 1.0 2.5
    2 3 4
    0 1 1 1
    0 2 2 2
    
    예상 출력
    Data Set 1:
    2.50
    
    Data Set 2:
    3.00