社区讨论

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 条回复,欢迎继续交流。

正在加载回复...