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

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

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

모든 구간 LIS

문제로 돌아가기

해설

f(l,r)f(l,r)f(l,r)를 구간 [l,r][l,r][l,r]의 LIS 길이라고 하자.

먼저 다음 값을 정의한다.

dl=f(l,r)−f(l,r−1)(1≤l<r)d_l=f(l,r)-f(l,r-1) \qquad (1 \leq l < r)dl​=f(l,r)−f(l,r−1)(1≤l<r)

원소 하나를 뒤에 추가했으므로 dld_ldl​은 항상 000 또는 111이다.

LIS 구간 행렬은 다음 unit-Monge 부등식을 만족한다.

f(l,r)+f(l+1,r−1)≤f(l,r−1)+f(l+1,r)f(l,r)+f(l+1,r-1) \leq f(l,r-1)+f(l+1,r)f(l,r)+f(l+1,r−1)≤

이 부등식은 순열의 원소를 좌표평면의 점 (i,Pi)(i,P_i)(i,Pi​)로 놓고 LIS를 오른쪽 위로 진행하는 최장 경로로 보면, 두 최적 경로의 교차 부분에서 꼬리를 교환하는 표준 uncrossing으로 얻을 수 있다.

부등식을 정리하면 다음을 얻는다.

f(l,r)−f(l,r−1)≤f(l+1,r)−f(l+1,r−1)f(l,r)-f(l,r-1) \leq f(l+1,r)-f(l+1,r-1)f(l,r)−f(l,r−1)≤f(l+

따라서 고정된 rrr에 대하여 d1,d2,⋯ ,dr−1d_1,d_2,\cdots,d_{r-1}d1​,d2​,⋯,d은 단조 증가한다. 각 값은 또는 이므로 어떤 경계 가 존재하여 에서는 이고, 에서는 이다. 경계가 이면 모든 이 인 경우이다.

r−1r-1r−1까지 끝나는 모든 구간의 답을 이미 알고 있다고 하자. 중간점 mmm에 대해 한 번 질의하여 f(m,r)f(m,r)f(m,r)를 얻으면, 이미 알고 있는 f(m,r−1)f(m,r-1)f(m,r과 비교하여 이 인지 인지 알 수 있다. 그러므로 이분 탐색으로 경계 를 찾을 수 있다.

경계 ttt를 찾은 뒤에는 다음과 같이 계산한다.

  • l<tl<tl<t이면 f(l,r)=f(l,r−1)f(l,r)=f(l,r-1)f(l,r)=f(l,r−1).
  • 이면 .

오른쪽 끝점 rrr에 필요한 질의 수는 최대 ⌈log⁡2r⌉\lceil\log_2 r\rceil⌈log2​r⌉번이다. N=100N=100N=100일 때 전체 질의 수는 다음과 같다.

∑r=2100⌈log⁡2r⌉=1+4+12+32+80+192+252=573\sum_{r=2}^{100}\lceil\log_2 r\rceil =1+4+12+32+80+192+252 =573r=2∑100​⌈log2​r⌉

따라서 600600600번의 제한을 만족한다.

시간 복잡도는 답을 출력하기 위한 O(N2)O(N^2)O(N2)이고, 질의 횟수는 O(Nlog⁡N)O(N\log N)O(NlogN)이다.

Solution written by GPT5.6

f
(
l
,
r
−
1)+
f(l+
1,r)
1,r)−
f(l+
1,r−
1)
r−1​
000
111
ttt
l<tl<tl<t
dl=0d_l=0dl​=0
t≤l<rt \leq l<rt≤l<r
dl=1d_l=1dl​=1
rrr
dld_ldl​
000
−
1)
dmd_mdm​
000
111
ttt
t≤l<rt \leq l<r
t≤l<r
f(l,r)=f(l,r−1)+1f(l,r)=f(l,r-1)+1f(l,r)=f(l,r−1)+1
  • f(r,r)=1f(r,r)=1f(r,r)=1.
  • =
    1+
    4+
    12+
    32+
    80+
    192+
    252=
    573