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

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

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

MEX 점수 구하기

문제로 돌아가기

해설

구간 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]