| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1 초 | 1024 MB | 34 | 10 | 9 | 28.125% |
A team of researchers is studying the similarities between sequences of hieroglyphs. They represent each hieroglyph with a non-negative integer. To perform their study, they use the following concepts about sequences.
For a fixed sequence $A,ドル a sequence $S$ is called a subsequence of $A$ if and only if $S$ can be obtained by removing some elements (possibly none) from $A$.
The table below shows some examples of subsequences of a sequence $A = [3, 2, 1, 2]$.
| Subsequence | How it can be obtained from $A$ |
|---|---|
| $[3, 2, 1, 2]$ | No elements are removed. |
| $[2, 1, 2]$ | $[\enclose{horizontalstrike}{3}, 2, 1, 2]$ |
| $[3, 2, 2]$ | $[3, 2, \enclose{horizontalstrike}{1}, 2]$ |
| $[3, 2]$ | $[3, \enclose{horizontalstrike}{2}, \enclose{horizontalstrike}{1}, 2]$ or $[3, 2, \enclose{horizontalstrike}{1}, \enclose{horizontalstrike}{2}]$ |
| $[3]$ | $[3, \enclose{horizontalstrike}{2}, \enclose{horizontalstrike}{1}, \enclose{horizontalstrike}{2}]$ |
| $[ ]$ | $[\enclose{horizontalstrike}{3}, \enclose{horizontalstrike}{2}, \enclose{horizontalstrike}{1}, \enclose{horizontalstrike}{2}]$ |
On the other hand, $[3, 3]$ or $[1, 3]$ are not subsequences of $A$.
Consider two sequences of hieroglyphs, $A$ and $B$. A sequence $S$ is called a common subsequence of $A$ and $B$ if and only if $S$ is a subsequence of both $A$ and $B$. Moreover, we say that a sequence $U$ is a universal common subsequence of $A$ and $B$ if and only if the following two conditions are met:
It can be shown that any two sequences $A$ and $B$ have at most one universal common subsequence.
The researchers have found two sequences of hieroglyphs $A$ and $B$. Sequence $A$ consists of $N$ hieroglyphs and sequence $B$ consists of $M$ hieroglyphs. Help the researchers compute a universal common subsequence of sequences $A$ and $B,ドル or determine that such a sequence does not exist.
You should implement the following procedure.
std::vector<int> ucs(std::vector<int> A, std::vector<int> B)
| 번호 | 배점 | 제한 |
|---|---|---|
| 1 | 3 | $N = M$; each of $A$ and $B$ consists of $N$ distinct integers between 0ドル$ and $N - 1$ (inclusive) |
| 2 | 15 | For any integer $k,ドル (the number of elements of $A$ equal to $k$) plus (the number of elements of $B$ equal to $k$) is at most 3ドル$. |
| 3 | 10 | $A[i] ≤ 1$ for each $i$ such that 0ドル ≤ i < N$; $B[j] ≤ 1$ for each $j$ such that 0ドル ≤ j < M$ |
| 4 | 16 | There exists a universal common subsequence of $A$ and $B$. |
| 5 | 14 | $N ≤ 3000$; $M ≤ 3000$ |
| 6 | 42 | No additional constraints. |
Consider the following call.
ucs([0, 0, 1, 0, 1, 2], [2, 0, 1, 0, 2])
Here, the common subsequences of $A$ and $B$ are the following: $[ ],ドル $[0],ドル $[1],ドル $[2],ドル $[0, 0],ドル $[0, 1],ドル $[0, 2],ドル $[1, 0],ドル $[1, 2],ドル $[0, 0, 2],ドル $[0, 1, 0],ドル $[0, 1, 2],ドル $[1, 0, 2]$ and $[0, 1, 0, 2]$.
Since $[0, 1, 0, 2]$ is a common subsequence of $A$ and $B,ドル and all common subsequences of $A$ and $B$ are subsequences of $[0, 1, 0, 2],ドル the procedure should return $[0, 1, 0, 2]$.
Consider the following call.
ucs([0, 0, 2], [1, 1])
Here, the only common subsequence of $A$ and $B$ is the empty sequence $[ ]$. It follows that the procedure should return an empty array $[ ]$.
Consider the following call.
ucs([0, 1, 0], [1, 0, 1])
Here, the common subsequences of $A$ and $B$ are $[ ],ドル $[0],ドル $[1],ドル $[0, 1]$ and $[1, 0]$. It can be shown that a universal common subsequence does not exist. Therefore, the procedure should return $[-1]$.
Input format:
N M A[0] A[1] ... A[N-1] B[0] B[1] ... B[M-1]
Output format:
T R[0] R[1] ... R[T-1]
Here, $R$ is the array returned by ucs and $T$ is its length.
Olympiad > International Olympiad in Informatics > IOI 2024 > Day 2 4번
C++17, C++20, C++17 (Clang), C++20 (Clang)