DOJ logoDOJ
문제
최근 추가된 문제들저장한 문제
카테고리DLC대회그룹팀게시판
랭킹
문제 풀이 랭킹스트릭 랭킹DOJ Power 랭킹
현황
문제 제안로그인회원가입
DOJ logoDOJ

OI 서브태스크 채점, Elo 레이팅, Discord 인증을 갖춘 커뮤니티 온라인 저지.

문제
문제 목록카테고리
커뮤니티
대회랭킹게시판공지사항외부 대회 개최이용 안내
계정
로그인회원가입채점 현황
정책
이용약관DLC 이용 규칙개인정보 처리방침API 사용 설명서언어별 채점 환경대회 순위 보상레이팅과 퍼포먼스
© 2026 DOJ
모든 권리 보유
해설

직사각형 2

문제로 돌아가기

해설

행 구간의 길이를 rrr, 그 구간의 AAA 원소 합을 aaa라고 하자. 열 구간의 길이를 ccc, 그 구간의 BBB 원소 합을 bbb라고 하자.

이 직사각형의 가중치 합은 다음과 같다.

∑i=x1x2∑j=y1y2(Ai+Bj)=ca+rb\sum_{i=x_1}^{x_2}\sum_{j=y_1}^{y_2}(A_i+B_j)=ca+rbi=x1​∑x

따라서 각 길이에 대해 가능한 최대 구간 합만 중요하다. XrX_rXr​를 AAA에서 길이가 정확히 rrr인 연속부분수열 합의 최댓값이라 하고, YcY_cYc를 에서 길이가 정확히 인 연속부분수열 합의 최댓값이라고 하자. 정답은 다음 값이다.

max⁡1≤r≤N,  1≤c≤M(cXr+rYc)\max_{1 \le r \le N,\;1 \le c \le M}(cX_r+rY_c)1≤r≤N,1≤c≤Mmax​(cXr​

점 (r,Xr)(r,X_r)(r,Xr​)들의 위쪽 볼록 껍질과 점 (c,Yc)(c,Y_c)(c,Yc​)들의 위쪽 볼록 껍질만 남기면 된다. 어떤 점이 위쪽 볼록 껍질 아래에 있으면, 모든 선형 목적식 에 대해 그 점은 최적이 될 수 없기 때문이다.

수열 AAA에 대해 임의의 실수 λ\lambdaλ가 주어졌을 때

max⁡r(Xr+λr)\max_r(X_r+\lambda r)rmax​(Xr​+λr)

은 각 원소에 λ\lambdaλ를 더한 수열의 최대 연속부분수열 합과 같다. 따라서 카데인 알고리즘으로 위쪽 볼록 껍질의 한 접점을 구할 수 있다. 이 접점 질의를 이용해 볼록 껍질을 재귀적으로 복원할 수 있다.

두 수열의 볼록 껍질을 모두 구한 뒤에는 한쪽 껍질의 각 점에 대해 다른 쪽 껍질에서 선형 함수의 최댓값을 이분 탐색하거나, 각도 순서로 보며 회전하는 캘리퍼스를 사용하면 된다.

정답의 절댓값은 646464비트 정수 범위 안에 들어간다.

시간 복잡도는 구현 방식에 따라 O((N+M)log⁡2(N+M))O((N+M)\log^2(N+M))O((N+M)log2(N+M)) 또는 그와 비슷한 수준이다.

2
​
​
j=y1​∑y2​​
(
Ai​
+
Bj​)=
ca+
rb
​
BBB
ccc
+
rYc​)
cx+dycx+dy
cx+dy