社区讨论
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 条回复,欢迎继续交流。
正在加载回复...