社区讨论
正确性求助
灌水区参与者 2已保存回复 9
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 9 条
- 当前快照
- 1 份
- 快照标识符
- @m2lvenuf
- 此快照首次捕获于
- 2024/10/23 20:48 去年
- 此快照最后确认于
- 2025/11/04 16:24 4 个月前
AT_abc178_f,题意和我的思路都很简洁。
思路:每当遇到一个相同的 满足 ,反转 ,输出 .
无解不用看,无解是对的.
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 条回复,欢迎继续交流。
正在加载回复...