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

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

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

lcstring

問題に戻る

解説

서브태스크 111에서는 AAA의 모든 구간을 열거하고 각 구간이 BBB에도 나타나는지 직접 확인할 수 있다.

전체 문제에서는 Di,jD_{i,j}Di,j​를 AiA_iAi​와 BjB_jBj​에서 함께 끝나는 공통 구간의 최대 길이라고 하자. 두 원소가 같으면 이전 두 원소에서 끝나는 공통 구간을 연장할 수 있고, 다르면 그 위치에서 끝나는 공통 구간이 없다. 따라서

Di,j={Di−1,j−1+1,Ai=Bj,0,Ai≠Bj.D_{i,j}=\begin{cases}D_{i-1,j-1}+1,&A_i=B_j,\\0,&A_i\ne B_j.\end{cases}Di,j​={

이다. 모든 Di,jD_{i,j}Di,j​의 최댓값이 답의 길이이다. 최댓값을 갱신할 때 AAA에서 끝나는 위치도 저장하면 그 위치부터 거꾸로 KKK개 원소를 찾아 답을 출력할 수 있다.

현재 행은 이전 행만 필요하므로 한 케이스의 시간 복잡도는 O(NM)O(NM)O(NM)이다. DP에는 O(M)O(M)O(M)의 공간을 쓰며, 입력 수열까지 포함한 전체 공간 복잡도는 O(N+M)O(N+M)O(N+M)이다.

Solution written by GPT6

Di−1,j−1​+1,0,​Ai​=Bj​,Ai​=Bj​.​