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

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

선불금

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

요약
여러 대출 플랜의 미래 월별 금리와 의무 기간, 갈아타기 위약금이 주어질 때, 매달 부채를 내림 처리하며 고정 상환액을 내는 조건에서 총 상환 금액이 최소가 되는 플랜 전환 일정을 구한다.
난이도

어려움10점 중 9점

유형
동적 계획법, 그리디, 시뮬레이션, 수학
정답자
아직 제출이 없습니다

문제

큰 집을 사려면 많은 돈이 들기 때문에 보통 대출이 필요하다. 대출 기관은 다양한 상환 상품을 제공하는데, 예를 들어 일정 기간 동안 현재 이자율로 고정할 수 있다. 이 약정 기간 동안에는 기관을 바꾸거나 조건을 변경할 수 없다. 기간이 끝나면 위약금을 내고 다른 조건으로 바꾸거나 새로운 기간을 시작할 수 있다. 문제는 이자율이 매달 달라진다는 점이다.

이 문제에서는 당신에게 수정 구슬이 있다는 다소 황당한 가정을 한다. 즉, 모든 상품의 앞으로 매달 이자율을 미리 알고 있다. 이 정보를 이용하여, 대출 기간 전체에 걸쳐 지불하는 총액이 최소가 되도록 상환 계획을 세워라.

매달 빚은 다음과 같이 변한다.

  1. 먼저 조건 변경에 따른 위약금이 빚에 더해진다. 맨 첫 달에는 위약금 없이 아무 상품이나 고를 수 있다.
  2. 그다음, (방금 더한 위약금을 포함한) 현재 빚에 대한 이자가 더해진다.

두 항목을 모두 더한 뒤, 빚을 소수점 둘째 자리까지 0 방향으로 버림한다. 그런 다음 고정 금액을 상환하여 그만큼 빚을 줄인다. 만약 빚이 고정 금액보다 적다면 남은 빚만큼만 갚고 대출이 완전히 청산된다. 약정 기간이 끝나기 전에 대출을 다 갚더라도 위약금은 물지 않는다.

입력

첫째 줄에 테스트 케이스의 수 정수 N≤50N \le 50이 주어진다.

각 테스트 케이스는 정수 mm과 소수점 이하 최대 두 자리인 두 실수 xx, yy가 있는 줄로 시작한다. 여기서 1≤m≤201 \le m \le 20은 상품의 수, 1≤x≤10000001 \le x \le 1000000은 대출 금액, 1≤y≤100001 \le y \le 10000은 매달 갚는 고정 금액이다.

다음 mm개의 줄에는 각각 정수 ll (1≤l≤601 \le l \le 60)이 주어지며, 해당 상품의 약정 기간(개월)이다.

그다음 mm개의 줄에는 각각 소수점 이하 최대 두 자리인 mm개의 실수가 주어진다. 값 C(a,b)≥0C(a, b) \ge 0은 상품 aa에서 상품 bb로 바꿀 때의 비용이며, C(a,b)=C(b,a)C(a, b) = C(b, a)이고 C(a,a)=0C(a, a) = 0이다.

이어서 정수 tt가 있는 줄이 주어진다. tt는 이자율 정보가 주어지는 개월 수이며, 최적해를 구하기에 충분히 크다고 가정해도 된다.

마지막으로 tt개의 줄에는 각각 mm개의 실수(소수점 이하 최대 두 자리)가 주어지며, 해당 달의 각 상품 월 이자율을 퍼센트 단위로 나타낸다.

대출은 항상 100년 이내에 완전히 갚을 수 있으며, 모든 입력 줄의 길이는 255자를 넘지 않는다고 가정해도 된다.

출력

각 테스트 케이스마다 Test case u 한 줄을 출력하고, 이어서 Total: s 한 줄을 출력한다. 여기서 ss는 대출 기간 전체에 걸쳐 지불하는 총액의 최솟값이며, 소수점 이하 정확히 두 자리로 출력한다. 콜론(:) 뒤에는 공백을 정확히 하나만 둔다. uu는 1부터 시작한다.

예제3

  1. 예제 1

    입력
    2
    1 200 100
    1
    0
    5
    3
    3
    3
    3
    3
    2 300 100
    1
    2
    0 4
    4 0
    4
    7 15
    20 5
    3 10
    4 10
    
    예상 출력
    Test case 1
    Total: 209.45
    Test case 2
    Total: 354.85
    
  2. 예제 2

    입력
    1
    1 50 100
    1
    0
    3
    0
    0
    0
    
    예상 출력
    Test case 1
    Total: 50.00
    
  3. 예제 3

    입력
    1
    1 1000 300
    1
    0
    10
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    
    예상 출력
    Test case 1
    Total: 1000.00