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

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

박물관의 긴 밤

면접 대비

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

요약
박물관이 최대 20개일 때, 관람 시간과 이동 시간이 주어지면 420분 안에 서로 다른 박물관을 몇 곳까지 방문할 수 있는지 구한다.
난이도

보통10점 중 6점

유형
동적 계획법, 비트 연산, 그래프, 완전 탐색
정답자
아직 제출이 없습니다

문제

오스트리아 빈은 도시 안에 100곳이 넘는 박물관이 있어 '문화의 도시'라 불린다. 박물관이 워낙 많아 아무리 오래 머물러도 모든 박물관을 둘러보기는 어렵고 비용도 많이 든다. 다행히 '박물관의 긴 밤(Long Night of Museums)'이라는 특별한 밤이 있어, 이 날에는 오후 6시부터 다음 날 새벽 1시까지 표 한 장으로 여러 박물관을 관람할 수 있다.

그렇지만 이 밤에도 도시의 모든 박물관을 관람할 수는 없다. 첫째, 일부 박물관은 오후 5시에 문을 닫아 이 행사에 참여하지 않는다. 둘째, 주어진 7시간 동안 모든 박물관으로 이동하고 각 박물관 내부를 남김없이 관람한 뒤 다음 박물관으로 이동하기에는 시간이 부족하다.

행사에 참여하는 박물관의 수, 각 박물관 내부를 관람하는 데 걸리는 시간, 그리고 한 박물관에서 다른 박물관으로 이동하는 데 걸리는 시간이 주어진다. '박물관의 긴 밤' 동안 관람할 수 있는 박물관의 수를 최대로 하는 관람 경로를 찾아, 관람할 수 있는 박물관의 최대 개수를 구하라.

관람은 어느 박물관에서 시작해도 좋으며(첫 박물관까지의 이동 시간은 들지 않는다), 서로 다른 박물관들을 차례로 한 번씩 방문하는 경로를 따른다. 사용할 수 있는 총 시간은 오후 6시부터 다음 날 새벽 1시까지, 즉 7시간(420분)이다. 선택한 경로에서 (방문한 각 박물관의 관람 시간의 합) + (연속한 두 박물관 사이의 이동 시간의 합)이 420분을 넘지 않아야 한다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 행사에 참여하는 박물관의 수 NN이 주어진다(1≤N≤201 \le N \le 20). 각 박물관은 11번부터 NN번까지의 고유한 번호를 가진다. 둘째 줄에는 11번부터 NN번까지 각 박물관을 관람하는 데 걸리는 시간(분)을 나타내는 NN개의 정수가 주어진다. 그 다음 NN개의 줄이 이어지며, ii번째 줄에는 NN개의 정수 Mi,1,Mi,2,…,Mi,NM_{i,1}, M_{i,2}, \dots, M_{i,N}이 주어진다. 여기서 Mi,kM_{i,k}는 ii번 박물관에서 kk번 박물관으로 이동하는 데 걸리는 시간(분)이다. 각 줄의 ii번째 정수, 즉 Mi,iM_{i,i}는 항상 00이다. 입력의 끝은 N=0N = 0으로 나타낸다.

출력

각 테스트 케이스마다 '박물관의 긴 밤' 동안 관람할 수 있는 박물관의 최대 개수를 한 줄에 하나씩 출력한다.

예제3

  1. 예제 1

    입력
    2
    500 500
    0 120
    200 0
    2
    220 220
    0 30
    20 0
    2
    150 150
    0 120
    200 0
    0
    
    예상 출력
    0
    1
    2
    
  2. 예제 2

    입력
    3
    100 100 100
    0 60 999
    999 0 60
    999 999 0
    0
    
    예상 출력
    3
    
  3. 예제 3

    입력
    2
    200 200
    0 20
    100 0
    0
    
    예상 출력
    2