제 풀이가 맞는지는 모르겠지만
하루씩 지남에 따라 겹치는 부분이 아주 많음을 이용하면 될 것 같습니다.
1D segment tree로 한 행 또는 열의 max는 빠르게 구할 수 있고, 총 K+N-1개의 행에 대해 각각의 최댓값을 구한 뒤
set 등을 써서 처음에 N개를 push하고 그 중 최댓값, 그 다음날은 하나를 set.erase 하고 그 중 최댓값, ... 이를 반복하면 될 것 같습니다.
QK (log N(미리 N+K-1개 행의 max 구함) + log N(set의 연산 총 K번)) = QK log N이 됩니다.
hckim96 3년 전
시간 복잡도가 Q * K * (최대 값 구하기) 인데
2차원 세그먼트 트리를 이용하면 N * M 행렬에서 사각 구간에서 최대값을 구하는 데 걸리는 시간은 O( logN * logM ) 이므로
전체 시간 복잡도가 log25 * 108 가 나와서 해봤지만 시간 초과가 납니다.
어떤 부분을 고쳐야 할까요?