社区讨论

WA悬关求条

P13710 [NWERC 2023] Klompendans参与者 9已保存回复 11

讨论操作

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

当前回复
11 条
当前快照
1 份
快照标识符
@mhjh779u
此快照首次捕获于
2025/11/04 02:30
4 个月前
此快照最后确认于
2025/11/04 06:18
4 个月前
查看原帖
CPP
#include <iostream>
#include <queue>
using namespace std;
int n, a, b, c, d;
bool v[502][502][3];
bool r[502][502];
int ans;
int main() {
    cin >> n >> a >> b >> c >> d;
    queue<int> qx, qy, qt;
    qx.push(0); qy.push(0); qt.push(0);
    v[0][0][0] = 1;
    r[0][0] = 1;
    ans = 1;
    while (!qx.empty()) {
        int x = qx.front(); qx.pop();
        int y = qy.front(); qy.pop();
        int t = qt.front(); qt.pop();
        int m[8][2];
        int dx, dy;
        if (t == 0) {
            dx = a; dy = b;
            m[0][0]=dx; m[0][1]=dy; m[1][0]=dx; m[1][1]=-dy;
            m[2][0]=-dx; m[2][1]=dy; m[3][0]=-dx; m[3][1]=-dy;
            m[4][0]=dy; m[4][1]=dx; m[5][0]=dy; m[5][1]=-dx;
            m[6][0]=-dy; m[6][1]=dx; m[7][0]=-dy; m[7][1]=-dx;
            for (int i = 0; i < 8; i++) {
                int nx = x + m[i][0], ny = y + m[i][1];
                if (nx >= 0 && nx < n && ny >= 0 && ny < n && !v[nx][ny][2]) {
                    v[nx][ny][2] = 1;
                    qx.push(nx); qy.push(ny); qt.push(2);
                    if (!r[nx][ny]) { r[nx][ny] = 1; ans++; }
                }
            }
            dx = c; dy = d;
            m[0][0]=dx; m[0][1]=dy; m[1][0]=dx; m[1][1]=-dy;
            m[2][0]=-dx; m[2][1]=dy; m[3][0]=-dx; m[3][1]=-dy;
            m[4][0]=dy; m[4][1]=dx; m[5][0]=dy; m[5][1]=-dx;
            m[6][0]=-dy; m[6][1]=dx; m[7][0]=-dy; m[7][1]=-dx;
            for (int i = 0; i < 8; i++) {
                int nx = x + m[i][0], ny = y + m[i][1];
                if (nx >= 0 && nx < n && ny >= 0 && ny < n && !v[nx][ny][1]) {
                    v[nx][ny][1] = 1;
                    qx.push(nx); qy.push(ny); qt.push(1);
                    if (!r[nx][ny]) { r[nx][ny] = 1; ans++; }
                }
            }
        } else if (t == 1) {
            dx = c; dy = d;
            m[0][0]=dx; m[0][1]=dy; m[1][0]=dx; m[1][1]=-dy;
            m[2][0]=-dx; m[2][1]=dy; m[3][0]=-dx; m[3][1]=-dy;
            m[4][0]=dy; m[4][1]=dx; m[5][0]=dy; m[5][1]=-dx;
            m[6][0]=-dy; m[6][1]=dx; m[7][0]=-dy; m[7][1]=-dx;
            for (int i = 0; i < 8; i++) {
                int nx = x + m[i][0], ny = y + m[i][1];
                if (nx >= 0 && nx < n && ny >= 0 && ny < n && !v[nx][ny][2]) {
                    v[nx][ny][2] = 1;
                    qx.push(nx); qy.push(ny); qt.push(2);
                    if (!r[nx][ny]) { r[nx][ny] = 1; ans++; }
                }
            }
        } else {
            dx = a; dy = b;
            m[0][0]=dx; m[0][1]=dy; m[1][0]=dx; m[1][1]=-dy;
            m[2][0]=-dx; m[2][1]=dy; m[3][0]=-dx; m[3][1]=-dy;
            m[4][0]=dy; m[4][1]=dx; m[5][0]=dy; m[5][1]=-dx;
            m[6][0]=-dy; m[6][1]=dx; m[7][0]=-dy; m[7][1]=-dx;
            for (int i = 0; i < 8; i++) {
                int nx = x + m[i][0], ny = y + m[i][1];
                if (nx >= 0 && nx < n && ny >= 0 && ny < n && !v[nx][ny][1]) {
                    v[nx][ny][1] = 1;
                    qx.push(nx); qy.push(ny); qt.push(1);
                    if (!r[nx][ny]) { r[nx][ny] = 1; ans++; }
                }
            }
        }
    }

    cout << ans;
}
```蒟蒻 WA on 样例 #1 #3
教会必关

回复

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

正在加载回复...