题解:AT_abc392_c [ABC392C] Bib

· · 题解

解题思路

仔细读题,我们发现需要记录穿着 $i$ 号号码布的人的编号 $A[MAXN]$。有点像存节点的父亲。我们在输入每个 $Q_i$($1 \le i \le n$)时令 $A_{Q_i} = i$ 即可。 再读题,对于每个人输出 $\large{Q_{P_{A_i}}}$ 即可。 ## 代码呈现 ```cpp #include <algorithm> #include <iostream> #include <cstdio> #include <cstring> using namespace std; int a[300005], p[300005], q[300005]; int main() { ios::sync_with_stdio(0); // 数据规模到 ae5 (3 < a)就要关流同步了 int n; cin >> n; for (int i = 1; i <= n; i ++) { cin >> p[i]; } for (int i = 1; i <= n; i ++) { cin >> q[i]; a[q[i]] = i; // 记录穿着 i 号号码布的人的编号 } for (int i = 1; i <= n; i ++) { cout << q[p[a[i]]] << ' '; // 输出答案 } return 0; } ``` ## 复杂度分析 $O(n)$。不记录 $A$ 就会超时!