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

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

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

MEX Interval Score

返回题目

题解

구간 I=[l,r]I=[l,r]I=[l,r]의 MEX와 같은 MEX를 갖는 더 작은 비어 있지 않은 부분 구간이 없다면 III를 극소 MEX 구간이라고 하자. 모든 길이 111 구간은 극소 MEX 구간이다.

CiC_iCi​는 모두 음이 아니다. 임의의 구간에서 MEX를 바꾸지 않는 끝점을 지우면 비용 합은 증가하지 않는다. 이 과정을 반복하면 같은 MEX를 갖는 극소 MEX 구간을 얻고, 점수는 감소하지 않는다. 따라서 답의 후보는 극소 MEX 구간만 보면 충분하다.

길이가 222 이상인 극소 MEX 구간 [l,r][l,r][l,r]에서는 Al≠ArA_l\ne A_rAl​=이다.

Al<ArA_l<A_rAl​<Ar​인 경우를 보자. 오른쪽 끝점을 지우면 MEX가 바뀌므로

mex⁡(Al,⋯ ,Ar)>Ar\operatorname{mex}(A_l,\cdots,A_r)>A_rmex(Al​,⋯,Ar​)>A

이어야 한다. 오른쪽 끝점 rrr을 고정하면 이 조건을 만족하는 가장 큰 lll은 유일하다. rrr까지 각 값 xxx가 마지막으로 등장한 위치를 last⁡r(x)\operatorname{last}_r(x)lastr라 하면

l=min⁡0≤x≤Arlast⁡r(x)l=\min_{0\le x\le A_r}\operatorname{last}_r(x)l=0≤x≤Ar​min​last

이다. 모든 값이 실제로 등장했고, ArA_rAr​의 직전 등장 위치가 lll보다 작을 때만 rrr을 지우면 MEX가 바뀐다. 이 조건을 만족하면 극소 구간 하나를 얻는다.

Al>ArA_l>A_rAl​>Ar​인 경우는 대칭적이다. lll부터 각 값 xxx가 처음 등장하는 위치를 라 하면

r=max⁡0≤x≤Alnext⁡l(x)r=\max_{0\le x\le A_l}\operatorname{next}_l(x)r=0≤x≤Al​max​next

으로 후보를 구할 수 있다. AlA_lAl​의 다음 등장 위치가 rrr보다 커야 한다.

첫 번째 경우에는 각 rrr마다 후보가 최대 하나이고, 두 번째 경우에는 각 lll마다 후보가 최대 하나이다. 길이 111 구간까지 합쳐도 후보 수는 O(N)O(N)O(N)이다.

왼쪽에서 스캔할 때 값 축 0,1,⋯ ,N0,1,\cdots,N0,1,⋯,N 위에 마지막 등장 위치를 저장하는 세그먼트 트리를 사용한다. 다음 연산이 필요하다.

  • 구간 [0,x][0,x][0,x]의 최솟값.
  • 저장된 위치가 기준 lll보다 작은 가장 작은 값. 이것이 구간의 MEX이다.

오른쪽에서 스캔할 때는 다음 등장 위치의 최댓값과, 저장된 위치가 기준 rrr보다 큰 가장 작은 값을 같은 방법으로 구한다. 극소 구간 전체를 O(Nlog⁡N)O(N\log N)O(NlogN)에 구할 수 있다.

각 후보 [s,e][s,e][s,e]의 가중치는

w(s,e)=Bmex⁡(As,⋯ ,Ae)−(Pe−Ps−1)w(s,e)=B_{\operatorname{mex}(A_s,\cdots,A_e)}-(P_e-P_{s-1})w(s,e)=Bmex(As​

이다. 여기서 PPP는 CCC의 누적 합이다.

질의를 오른쪽 끝점 rrr의 오름차순으로 정렬한다. 후보도 eee의 오름차순으로 정렬하고, 현재 질의의 rrr 이하인 후보를 모두 추가한다. 시작점 sss 위치에 후보 가중치의 최댓값을 저장하는 세그먼트 트리를 두면, 질의 [l,r][l,r][l,r]의 답은 시작점 구간 [l,의 최댓값이다. 추가된 후보는 이미 을 만족하므로 정확히 안에 포함되는 후보만 선택된다.

전체 시간 복잡도는 O((N+Q)log⁡N)O((N+Q)\log N)O((N+Q)logN)이고, 공간 복잡도는 O(N+Q)O(N+Q)O(N+Q)이다.

Ar​
r​
​
(
x
)
r
​
(
x
)
next⁡l(x)\operatorname{next}_l(x)
nextl​(x)
l
​
(
x
)
,
⋯
,
Ae​
)
​
−
(Pe​−
Ps−1​)
N][l,N]
[l,N]
e≤re\le re≤r
[l,r][l,r][l,r]