Post

2026-03-11 문제풀이

2026-03-11 문제풀이

하얀 전파

풀이

색칠할 수 있는 최대한의 자리를 찾고 다 색칠하기 위한 시간을 구하는 문제다.

일단 주목해야할 부분은 L, R, U, D중에 0인 부분이다. 0이면 최대한 변에 붙여서 색칠할 수 있는 부분을 늘리는 게 직관적으로 중요하다.

둘 다 0이면 변의 길이가 1이 되는거고 둘 다 0이 아니면 1초에 $(L+R)$만큼, $(U+D)$만큼 색칠 할 수 있다.

이를 이용하면

  1. 둘 다 0이면(L, R세트와 U, D세트) 변의 길이가 1이다.
  2. 나머지 경우는 변의 길이는 각각 m, n이 된다.

이를 이용해서 쉽게 W를 구할 수 있다.

이제 시간인데 아까 잠깐 언급했듯이 $(L+R)$만큼, $(U+D)$만큼 색칠 할 수 있기 때문에 정답은
\(\lceil\frac{(m-1)}{(L+R)}\rceil+\lceil\frac{(n-1)}{(U+D)}\rceil\)
위와 같은 식이 된다.

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import sys
input = sys.stdin.readline
for i in range(int(input())) : 
    n, m, L, R, U, D = map(int, input().split())
    w, h = 1, 1
    tl, tr, tu, td = 0, 0, 0, 0
    if L == 0 : 
        if R : 
            w = m
            d = m-1
            tr = (d+R-1) // R
    elif R == 0 :
        w = m
        d = m - 1
        tl = (d+L-1)//L
    else : 
        w = m
        tl = tr = (m+L+R-2) // (L+R)

    if U == 0 :
        if D : 
            h = n
            td = (n+D-2) // D
    elif D == 0 :
        h = n
        tu = (n+U-2) // U
    else : 
        h = n
        td = tu = (n-2+U+D) // (U+D)
    W = w * h
    T = max(tl+tu, tl+td, tr+tu, tr+td)
    print(W, T)
This post is licensed under CC BY 4.0 by the author.