DOJ logoDOJ
题目
最近添加的题目收藏的题目Workbooks
分类DLC比赛小组团队讨论区
排名
解题数量排行榜连续解题排名DOJ Power 排行榜
评测状态
征题登录注册
DOJ logoDOJ

支持 OI 子任务计分、Elo 等级分和 Discord 账号绑定的社区在线评测系统。

题目
题目列表分类
社区
比赛排名讨论区公告举办外部比赛指南
账号
登录注册评测状态
政策
服务条款DLC 使用规则隐私政策API 文档语言运行环境比赛排名奖励评级与表现
© 2026 DOJ
保留所有权利
题解

Largest Rectangle in a Histogram Returns

返回题目

题解

너비 www인 한 구간의 모든 막대 높이를 hhh 이상으로 만들 수 있는지 생각하자. 이 구간에는 BBB에서 가장 큰 www개만 쓰면 충분하다. 구간의 AAA를 오름차순, 선택한 BBB를 내림차순으로 짝지었을 때 모든 합이 hhh 이상이면 가능하고, 그렇지 않으면 어떤 짝짓기도 불가능하다.

각 AiA_iAi​에 대해 Ai+Bj≥hA_i+B_j \geq hAi​+Bj를 만족하는 의 개수를 라 하자. 길이 인 구간의 들을 오름차순으로 정렬한 값을 라 하면 가능할 필요충분조건은 모든 에 대해 인 것이다.

슬라이딩 윈도우에서 rir_iri​의 빈도를 관리한다. Dk=#{i:ri≤k}−kD_k=\#\{i:r_i\leq k\}-kDk​=#{i:라 두면 조건은 모든 이다. 값 의 최대 접두사 합을 저장하는 세그먼트 트리를 사용하면 원소 추가와 삭제, 조건 확인을 각각 에 할 수 있다.

각 너비 www에 대해 가능한 최대 높이 hhh를 이분 탐색하고 whwhwh의 최댓값을 취한다. 시간 복잡도는 O(N2log⁡Nlog⁡V)O(N^2\log N\log V)O(N2logN이다.

​
≥
h
BjB_jBj​
rir_iri​
www
rir_iri​
r(1),⋯ ,r(w)r_{(1)},\cdots,r_{(w)}r(1)​,⋯,r(w)​
kkk
r(k)≥kr_{(k)} \geq kr(k)​≥k
ri​≤
k}−
k
Dk≤0D_k\leq0Dk​≤0
cnt0,cnt1−1,⋯ ,cntw−1\mathrm{cnt}_0,\mathrm{cnt}_1-1,\cdots,\mathrm{cnt}_w-1cnt0​,cnt1​−1,⋯,cntw​−1
O(log⁡N)O(\log N)O(logN)
log
V
)