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

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

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

Maximum Subarray Problem

返回题目

题解

서브태스크 111에서는 모든 (l,r)(l,r)(l,r)에 대해 구간 합을 처음부터 계산할 수 있다. 시간 복잡도는 O(N3)O(N^3)O(N3)이다.

서브태스크 222에서는 누적합 Pi=A1+⋯+AiP_i=A_1+\cdots+A_iPi​=A1​+⋯+A를 계산한다. 각 구간 합을 Pr−Pl−1P_r-P_{l-1}Pr​−Pl−1​로 구하면 시간 복잡도는 O(N2)O(N^2)O(N2)이다.

전체 문제에서는 iii에서 끝나는 비어 있지 않은 부분 배열의 합의 최댓값을 DiD_iDi​라고 하자. 마지막 원소만 선택하거나, i−1i-1i−1에서 끝나는 최적 부분 배열에 AiA_iA를 붙일 수 있으므로

D1=A1,Di=max⁡(Ai,Di−1+Ai)(2≤i≤N)D_1=A_1,\qquad D_i=\max(A_i,D_{i-1}+A_i)\quad(2\leq i\leq N)D1​=A1​,D

이다. 답은 모든 DiD_iDi​의 최댓값이다. 초기값을 000이 아닌 A1A_1A1​로 두어야 모든 원소가 음수인 경우도 처리할 수 있다. 가능한 합이 3232비트 정수 범위를 넘으므로 비트 정수를 사용한다.

전체 문제의 시간 복잡도는 O(N)O(N)O(N)이고 추가 공간 복잡도는 O(1)O(1)O(1)이다.

Solution written by GPT6

i
​
i
​
i​
=
max(Ai​,Di−1​+
Ai​)(2≤
i≤
N)
32
646464