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

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

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

Longest Common Subsequence

問題に戻る

解説

서브태스크 111에서는 AAA의 모든 부분 수열을 열거하고, 각각이 BBB의 부분 수열인지 확인할 수 있다. 시간 복잡도는 O(2N(N+M))O(2^N(N+M))O(2N(N+M))이다.

전체 문제에서는 Di,jD_{i,j}Di,j​를 AAA의 앞 iii개 원소와 BBB의 앞 jj개 원소의 최장 공통 부분 수열 길이라고 하자. 이다. 이면 이고, 그렇지 않으면 이다.

DN,MD_{N,M}DN,M​부터 역추적한다. 현재 두 원소가 같으면 그 원소를 답에 넣고 두 인덱스를 모두 줄인다. 다르면 값이 같은 쪽의 이전 상태로 이동한다. 역추적한 원소를 뒤집으면 정답이다. 값이 같은 이전 상태가 둘이라면 어느 쪽으로 이동해도 된다.

한 케이스의 시간 복잡도와 공간 복잡도는 모두 O(NM)O(NM)O(NM)이다.

Solution written by GPT6

j
D0,j=Di,0=0D_{0,j}=D_{i,0}=0D0,j​=Di,0​=0
Ai=BjA_i=B_jAi​=Bj​
Di,j=Di−1,j−1+1D_{i,j}=D_{i-1,j-1}+1Di,j​=Di−1,j−1​+1
Di,j=max⁡(Di−1,j,Di,j−1)D_{i,j}=\max(D_{i-1,j},D_{i,j-1})Di,j​=max(Di−1,j​,Di,j−1​)