社区讨论
WA on #26求调
P7915[CSP-S 2021] 回文参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhj2qtxn
- 此快照首次捕获于
- 2025/11/03 19:46 4 个月前
- 此快照最后确认于
- 2025/11/03 19:46 4 个月前
打的暴搜,但是WA on #26(就是hack数据),怀疑是check函数写错了,求大佬看看
CPP#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
using namespace std;
int t, n, is;
int a[1000005], c[1000005], ch[100005];
int check(int k) {
memset(ch, 0, sizeof(ch));
int cnt1 = 0, cnt2 = 0;
for (int i = 1; i <= k; i++) {
if (c[i] == 0) ch[i] = a[++cnt1];
else ch[i] = a[2 * k - (++cnt2) + 1];
}
for (int i = k + 1; i <= 2 * k; i++) {
if (a[cnt1 + 1] == ch[2 * k + 1 - i]) {
cnt1++;
c[i] = 0;
}
else if (a[2 * k - cnt2] == ch[2 * k + 1 - i]) {
cnt2++;
c[i] = 1;
}
else return 0;
}
return 1;
}
void print(int k) {
for (int i = 1; i <= k; i++) {
cout << c[i] << " ";
}
}
void dfs(int k, int s) {
if (k == s + 1) {
if (check(s)) is = 1;
return ;
}
if (!is) {
c[k] = 0;
dfs(k + 1, s);
if (!is) {
c[k] = 1;
dfs(k + 1, s);
}
} else return ;
}
int main() {
cin >> t;
while (t--) {
is = 0;
memset(a, 0, sizeof(a));
memset(c, 0, sizeof(c));
cin >> n;
for (int i = 1; i <= 2 * n; i++) {
cin >> a[i];
}
dfs(1, n);
if (!is) cout << -1 << endl;
else {
for (int i = 1; i <= 2 * n; i++) {
if (c[i] == 0) cout << 'L';
else cout << 'R';
}
cout << endl;
}
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...