专栏文章

题解:AT_abc392_c [ABC392C] Bib

AT_abc392_c题解参与者 4已保存评论 4

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
4 条
当前快照
1 份
快照标识符
@miq9glur
此快照首次捕获于
2025/12/04 01:08
3 个月前
此快照最后确认于
2025/12/04 01:08
3 个月前
查看原文

解题思路

AtCoder\text{AtCoder} 绕口令!
仔细读题,我们发现需要记录穿着 ii 号号码布的人的编号 A[MAXN]A[MAXN]。有点像存节点的父亲。我们在输入每个 QiQ_i1in1 \le i \le n)时令 AQi=iA_{Q_i} = i 即可。
再读题,对于每个人输出 QPAi\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)O(n)。不记录 AA 就会超时!

评论

4 条评论,欢迎与作者交流。

正在加载评论...