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

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

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

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