DOJ logoDOJ
题目
最近添加的题目收藏的题目Workbooks
分类DLC比赛小组团队讨论区
排名
解题数量排行榜连续解题排名DOJ Power 排行榜
评测状态
征题登录注册
DOJ logoDOJ

支持 OI 子任务计分、Elo 等级分和 Discord 账号绑定的社区在线评测系统。

题目
题目列表分类
社区
比赛排名讨论区公告举办外部比赛指南
账号
登录注册评测状态
政策
服务条款DLC 使用规则隐私政策API 文档语言运行环境比赛排名奖励评级与表现
© 2026 DOJ
保留所有权利
题解

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​.​