페이지를 불러오는 중…
해결한 사람
1
명
정답률
50.00
%
시간 제한
1000
ms
메모리 제한
2048
MB
한 팀의 연구자들이 상형문자열 사이의 유사성을 연구하고 있다. 그들은 각각의 상형문자를 음이 아닌 정수로 표현한다. 그들이 연구에 사용하는 문자열 개념은 다음과 같다.
고정된 상형문자열 에서 개 이상의 상형문자를 지워서 를 얻을 수 있으면 를 의 **부분수열(subsequence)**이라고 부른다. 아래의 테이블은 상형문자열 의 부분수열의 예를 보여주고 있다.
| 부분수열 | 로부터 구하는 방법 |
|---|---|
| [3, 2, 1, 2] | 아무 원소도 삭제하지 않음 |
| [2, 1, 2] | [<s>3</s>, 2, 1, 2] |
| [3, 2, 2] | [3, 2, <s>1</s>, 2] |
| [3, 2] | [3, <s>2</s>, <s>1</s>, 2] or [3, 2, <s>1</s>, <s>2</s>] |
| [3] | [3, <s>2</s>, <s>1</s>, <s>2</s>] |
| [ ] | [<s>3</s>, <s>2</s>, <s>1</s>, <s>2</s>] |
반대로 와 는 의 부분수열이 아니다.
두 상형문자열 와 를 생각해보자. 상형문자열 가 와 모두의 부분수열이면 와 의 **공통부분수열 (common subsequence)**이라고 부른다. 추가로, 상형문자열 가 아래의 두 조건을 만족하면 와 의 **보편공통부분수열 (universal common subsequence)**이라 부른다:
임의의 두 상형문자열 와 의 보편공통부분수열은 최대 1개라는 것은 보일 수 있다.
연구자들은 상형문자열 와 를 찾아냈다. 의 길이는 이고 의 길이는 이다. 여러분은 연구자들을 도와서 와 의 보편공통부분수열을 계산하던지 아니면 보편공통부분수열이 없다고 판정하라.
여러분은 다음의 프로시져를 구현해야 한다.
std::vector<int> ucs(std::vector<int> A, std::vector<int> B)
| 서브태스크 | 점수 | 추가 제약조건 |
|---|---|---|
| 1 | ; 와 는 각각 이상 이하의 서로 다른 개의 정수로 구성된다. | |
| 2 | 모든 정수 는 와 에서 최대 번 등장한다. 다시 말해, 모든 정수 에 대해 (에 포함된 의 갯수) + (에 포함된 의 갯수) 는 최대 이다. | |
| 3 | (); () | |
| 4 | 와 의 보편공통부분수열이 존재한다. | |
| 5 | ; | |
| 6 | 제약조건없음 |
다음의 호출을 생각해보자.
ucs([0, 0, 1, 0, 1, 2], [2, 0, 1, 0, 2])
여기서 와 의 공통부분수열은 다음과 같다: , , , , , , , , , , , , , .
상형문자열 이 와 의 공통부분수열이고 모든 와 의 공통부분수열이 의 부분수열이므로 프로시져는 을 반환한다.
다음의 호출을 생각해보자.
ucs([0, 0, 2], [1, 1])
와 의 유일한 공통부분수열은 빈 상형문자열 이다. 따라서 프로시져는 빈 상형문자열 배열 을 반환한다.
다음의 호출을 생각해보자.
ucs([0, 1, 0], [1, 0, 1])
와 의 공통부분수열은 그리고 이다. 이 경우 보편공통부분수열이 존재하지 않고 프로시져는 을 반환한다.
N M
A[0] A[1] ... A[N-1]
B[0] B[1] ... B[M-1]
T
R[0] R[1] ... R[T-1]
은 ucs가 반환하는 배열이고 는 그 길이이다.
6 5
0 0 1 0 1 2
2 0 1 0 2
4
0 1 0 2
3 2
0 0 2
1 1
0
3 3
0 1 0
1 0 1
1
-1
International Olympiad in Informatics (IOI) 2024, official task package and official Korean translation.
Reporch에서 한국어 번역, 수식 표기, 이미지 호스팅 및 형식을 수정했습니다.
로그인 상태를 확인하는 중입니다.