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

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

게리맨더링

면접 대비

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

요약
각 구역의 P와 Q 득표수가 주어질 때, n개 구역을 두 개의 비어 있지 않은 선거구로 나누어 P가 이길 수 있는 선거구 수의 최댓값을 구한다.
난이도

보통10점 중 5점

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

문제

게리맨더링은 특정 정당에게 유리하도록 선거구를 나누는 기법이다. 원래 선거구는 유권자 간 대표성이 대체로 균등하도록 10년에 한 번씩 재검토하게 되어 있다. 그러나 집권 정당은 미래 선거에서 더 많은 의석을 얻기 위한 도구로 선거구 재획정을 활용하곤 한다. 이렇게 하면 많은 유권자의 표가 사실상 사표(死票)가 되어 원래 취지에 어긋나지만, 어쨌든 선거에서 이기기 위해 할 수 있는 일을 하는 셈이다.

게리맨더링을 잘 하려면 최적의 선거구를 계산하는 프로그램이 필요하다. 만들어진 선거구가 “자연스럽게” 보이지 않아도 상관없다. 이 문제에서는 여러 개의 선거 구역(precinct)을 정확히 두 개의 선거구(district)로 나눈다. 프로그램은 특정 정당이 최적의 게리맨더링으로 두 선거구를 모두 이길 수 있는지, 한 선거구만 이길 수 있는지, 아니면 하나도 이길 수 없는지를 판정해야 한다. 각 선거구는 최소한 하나의 구역을 포함해야 하지만, 두 선거구가 같은(또는 비슷한) 수의 구역을 가질 필요는 없다.

어떤 선거구에서 정당 P의 총 득표수가 정당 Q의 총 득표수보다 엄밀히 많을 때 P가 그 선거구를 이긴 것으로 본다. 두 정당의 득표수가 같으면 P가 이긴 것이 아니다.

입력

첫 줄에 입력에 포함된 데이터 집합의 개수 KK (K≥1K \ge 1)가 주어진다. 그 뒤로 아래 형식의 데이터 집합이 KK개 이어진다.

각 데이터 집합의 첫 줄에는 구역의 수 nn (1≤n≤1001 \le n \le 100)이 주어진다. 이어서 nn개의 줄에 각 구역 ii의 정보가 주어지며, 각 줄에는 두 정당 P와 Q에 투표할 것으로 예상되는 유권자 수 pip_i와 qiq_i가 주어진다. 이 값들은 00 이상 10001000 이하이다.

출력

각 데이터 집합에 대해 먼저 Data Set x:를 한 줄에 출력한다. 여기서 xx는 데이터 집합의 번호(1부터 시작)이다. 그다음 줄에 최적의 게리맨더링으로 정당 P가 이길 수 있는 선거구의 최대 개수(00, 11, 또는 22)를 출력한다.

예제3

  1. 예제 1

    입력
    2
    3
    100 90
    95 92
    81 90
    3
    100 92
    95 90
    81 90
    
    예상 출력
    Data Set 1:
    2
    Data Set 2:
    1
    
  2. 예제 2

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

    입력
    1
    2
    0 1
    0 1
    
    예상 출력
    Data Set 1:
    0