DOJ logoDOJ
問題
最近追加された問題保存した問題Workbooks
カテゴリDLCコンテストグループチーム掲示板
ランキング
正解数ランキングストリークランキングDOJ Powerランキング
提出状況
問題募集ログイン新規登録
DOJ logoDOJ

OI形式のサブタスク採点、Eloレーティング、Discord認証を備えたオンラインジャッジです。

問題
問題一覧カテゴリ
コミュニティ
コンテストランキング掲示板お知らせ外部のコンテストを開催するガイド
アカウント
ログイン新規登録ジャッジ状態
ポリシー
利用規約DLCの利用規則プライバシーAPI 文書言語ランタイムコンテストの順位報酬レーティングとパフォーマンス
© 2026 DOJ
All rights reserved
解説

LIS of Every Interval

問題に戻る

解説

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