2026-03-11 문제풀이
2026-03-11 문제풀이
하얀 전파
풀이
색칠할 수 있는 최대한의 자리를 찾고 다 색칠하기 위한 시간을 구하는 문제다.
일단 주목해야할 부분은 L, R, U, D중에 0인 부분이다. 0이면 최대한 변에 붙여서 색칠할 수 있는 부분을 늘리는 게 직관적으로 중요하다.
둘 다 0이면 변의 길이가 1이 되는거고 둘 다 0이 아니면 1초에 $(L+R)$만큼, $(U+D)$만큼 색칠 할 수 있다.
이를 이용하면
- 둘 다 0이면(L, R세트와 U, D세트) 변의 길이가 1이다.
- 나머지 경우는 변의 길이는 각각 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.