社区讨论

正确性求助

灌水区参与者 2已保存回复 9

讨论操作

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

当前回复
9 条
当前快照
1 份
快照标识符
@m2lvenuf
此快照首次捕获于
2024/10/23 20:48
去年
此快照最后确认于
2025/11/04 16:24
4 个月前
查看原帖
AT_abc178_f,题意和我的思路都很简洁。
思路:每当遇到一个相同的 ii 满足 ai=bia_i=b_i,反转 b[i,n]b_[i,n],输出 bib_i.
无解不用看,无解是对的.
CPP
#include <bits/stdc++.h>

using namespace std;

const int kN = 2e5 + 2;

int n, a[kN], b[kN];
map<int, int> bt, ct;

int main() {
    freopen("gen.in", "r", stdin);
    freopen("my.out", "w", stdout);
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        bt[a[i]]++;
    }
    for (int i = 1; i <= n; i++) {
        cin >> b[i];
        ct[b[i]]++;
    }
    for (int i = 1; i <= n; i++) {
        if (bt[a[i]] + ct[a[i]] > n) {
            cout << "No\n";
            exit(0);
        }
    }
    for (int i = 1; i <= n; i++) {
        if (bt[b[i]] + ct[b[i]] > n) {
            cout << "No\n";
            exit(0);
        }
    }
    cout << "Yes\n";
    reverse(b + 1, b + n + 1);
    for (int i = 1; i <= n; i++) {
        if (a[i] == b[i]) {
            reverse(b + i, b + n + 1);
        }
        cout << b[i] << ' ';
    }

    return 0;
}
/*OSQD!!!*/

回复

9 条回复,欢迎继续交流。

正在加载回复...