물?

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

요약
h×w 격자와 특수 문자의 집합이 주어질 때, 가로와 세로가 모두 m 이상인 부분 직사각형 중 특수 문자의 비율이 최대인 것을 찾고, 비율이 같으면 넓이가 큰 것을 고른다.
난이도

보통10점 중 7점

유형
누적 합, 완전 탐색, 수학, 구현
정답자
아직 제출이 없습니다

문제

큐리오시티 탐사선을 화성으로 보낸 주요 목표 중 하나는, 화성 표면에 과거에(어쩌면 지금도) 물이 있었을지 모른다는 증거를 더 찾는 것입니다. 물이 있었는지 판단하기 위해 과학자들은 녹(산화)의 흔적처럼 사진 속의 여러 단서를 이용합니다. 이 문제에서는 화성 표면 사진을 살펴보며 물의 증거가 있다면 찾아냅니다.

각 사진은 h×wh \times w 픽셀 크기의 직사각형으로 주어지며, 1≤h,w≤501 \le h, w \le 50 입니다. 각 픽셀은 어떤 물질의 종류를 나타내고, 대문자 알파벳 A부터 Z까지의 한 글자로 표기됩니다(그 밖의 값은 나타나지 않습니다). 이 글자들 중 일부는 특수 글자로 지정되어 있으며, 이는 물을 가리키는 단서입니다. 최소 크기 mm(1≤m≤min⁡(h,w)1 \le m \le \min(h, w))이 주어질 때, 높이와 너비가 모두 mm 이상인 모든 축에 평행한 부분 직사각형 가운데 특수 글자의 밀도가 가장 큰 값을 구하세요.

어떤 직사각형의 밀도는 그 안에 들어 있는 특수 픽셀의 개수를 전체 픽셀 수로 나눈 값입니다.

입력

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

  • 한 줄에 세 정수 hh, ww, mm이 주어집니다. 각각 이미지의 높이, 이미지의 너비, 최소 직사각형 크기입니다.
  • 특수 글자를 나타내는 한 줄이 주어집니다. A–Z 중 서로 다른 대문자 11개에서 2626개로 이루어진 문자열이며(정렬되어 있지 않을 수 있습니다), 이 글자들이 물을 가리키는 특수 글자입니다.
  • 이어서 hh개의 줄이 주어지며, 각 줄은 정확히 ww개의 대문자로만 이루어져 이미지의 한 행을 나타냅니다.

출력

각 데이터 집합마다 먼저 Data Set x:를 한 줄에 출력합니다. 여기서 xx는 데이터 집합의 번호이며 11부터 시작합니다. 다음 줄에는 최대 밀도를 분수 a/b 형태로 출력합니다. 이때 aa는 특수 픽셀의 개수, bb는 선택한 직사각형의 전체 픽셀 수이고, 높이와 너비가 모두 mm 이상인 직사각형만 고려합니다.

분수는 센 값 그대로 출력하며 약분하지 않습니다(예: 1/2가 아니라 8/16). 최대 밀도를 달성하는 직사각형이 여러 개라면 전체 픽셀 수 bb가 가장 큰 것을 선택합니다. 이렇게 하면 답이 유일하게 정해집니다.

서로 이웃한 데이터 집합 사이에는 빈 줄을 하나 넣어 구분합니다.

예제7

  1. 예제 1

    입력
    1
    6 13 3
    YX
    ITTTTHHHHTTTT
    IXYOXOOOOOOXI
    IOOOXOOOOOXXJ
    IYOOOOXOOOOOI
    IXXOYOOYOOOOI
    IAAAAAXAXAAAJ
    
    예상 출력
    Data Set 1:
    8/16
    
  2. 예제 2

    입력
    1
    1 1 1
    A
    A
    
    예상 출력
    Data Set 1:
    1/1
    
  3. 예제 3

    입력
    1
    1 1 1
    Z
    A
    
    예상 출력
    Data Set 1:
    0/1
    
  4. 예제 4

    입력
    1
    4 5 2
    A
    AAAAA
    AAAAA
    AAAAA
    AAAAA
    
    예상 출력
    Data Set 1:
    20/20
    
  5. 예제 5

    입력
    1
    3 3 3
    X
    XOX
    OXO
    XOX
    
    예상 출력
    Data Set 1:
    5/9
    
  6. 예제 6

    입력
    1
    2 4 2
    X
    XOXO
    OXOX
    
    예상 출력
    Data Set 1:
    4/8
    
  7. 예제 7

    입력
    2
    1 1 1
    X
    X
    2 4 2
    X
    XOXO
    OXOX
    
    예상 출력
    Data Set 1:
    1/1
    
    Data Set 2:
    4/8