다중 프로세서 스케줄링

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

요약
각 N개의 순차 프로시저로 이루어진 두 애플리케이션이 프로세서를 공유할 때, 두 애플리케이션이 모두 끝나는 최소 시간을 구합니다.
난이도

보통10점 중 7점

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

문제

다중 프로세서 컴퓨터에서 두 개의 응용 프로그램이 실행된다. 각 응용 프로그램 ii (i=1,2i = 1, 2)는 11번부터 NN번까지 번호가 매겨진 NN개의 프로시저로 이루어지며, 이 프로시저들은 반드시 1,2,…,N1, 2, \ldots, N의 순서대로 차례로 실행되어야 한다. 프로시저는 쌍 (i,j)(i, j)로 나타내며, i∈{1,2}i \in \{1, 2\}는 응용 프로그램을, 1≤j≤N1 \le j \le N은 응용 프로그램 ii 안에서의 순서를 뜻한다. 프로시저 (i,j)(i, j)는 오직 프로세서 P(i,j)P(i, j)에서만 실행할 수 있고, 실행에는 D(i,j)D(i, j)초가 걸린다.

두 응용 프로그램의 모든 프로시저를 프로세서에 배치하여, 두 응용 프로그램 중 마지막 프로시저가 끝나는 시각(메이크스팬, makespan)을 최소로 만들어라. 두 응용 프로그램은 모두 시각 00부터 스케줄링할 수 있다. 올바른 스케줄은 다음 규칙을 지켜야 한다.

  • 프로시저 (i,j)(i, j)가 프로세서 P(i,j)P(i, j)에서 실행을 시작하면, 끝날 때까지 중간에 멈출 수 없다.
  • 한 프로세서는 같은 시각에 최대 한 개의 프로시저만 실행할 수 있지만, 서로 다른 프로세서는 프로시저를 동시에 병렬로 실행할 수 있다.
  • 2≤j≤N2 \le j \le N인 프로시저 (i,j)(i, j)는 프로시저 (i,j−1)(i, j-1)이 끝나는 시각 또는 그 이후의 임의의 시각에 시작할 수 있다.
  • 시각 tt에 시작한 프로시저는 시각 t+D(i,j)t + D(i, j)에 끝난다.

두 응용 프로그램의 프로시저 정보가 주어질 때, 가능한 최소 메이크스팬을 구하여라.

입력

첫째 줄에 테스트 케이스의 수 TT가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다. 첫째 줄에는 각 응용 프로그램의 프로시저 개수 NN (1≤N≤3001 \le N \le 300)이 주어진다. 이어지는 NN개의 줄에는 첫 번째 응용 프로그램이 주어지며, 그중 jj번째 줄에는 두 정수 P(1,j)P(1, j)와 D(1,j)D(1, j)가 공백으로 구분되어 주어진다. 그다음 NN개의 줄에는 같은 형식으로 두 번째 응용 프로그램의 P(2,j)P(2, j)와 D(2,j)D(2, j)가 주어진다.

모든 값은 1≤P(i,j)≤101 \le P(i, j) \le 10과 1≤D(i,j)≤150001 \le D(i, j) \le 15000을 만족한다. P(i,j)P(i, j)와 P(k,l)P(k, l)이 같을 수도 있음에 유의하라. 두 프로시저가 같은 프로세서를 사용하면 겹치는 시간 구간에 실행될 수 없다. 같은 응용 프로그램의 프로시저는 이미 순차적으로 실행되므로, 이 제약은 서로 다른 두 응용 프로그램 사이에서만 의미가 있다.

출력

각 테스트 케이스마다 최소 메이크스팬을 한 줄에 하나씩 출력한다. 답은 입력에 주어진 테스트 케이스의 순서와 같은 순서로 출력한다.

예제3

  1. 예제 1

    입력
    2
    1
    2 6
    1 10
    3
    2 31
    2 18
    4 15
    2 26
    3 40
    5 16
    
    예상 출력
    10
    90
    
  2. 예제 2

    입력
    1
    1
    1 5
    1 7
    
    예상 출력
    12
    
  3. 예제 3

    입력
    1
    1
    1 5
    3 7
    
    예상 출력
    7