QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#427285 | #8748. 简单博弈 | PorNPtree# | WA | 1969ms | 130812kb | C++17 | 6.7kb | 2024-06-01 11:57:19 | 2024-06-01 11:57:20 |
Judging History
answer
#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
using namespace std;
const int N = 505;
int M[15];
int f1[2][8][N][N];
const int g1[2][4] = {{1, 1, 1, 0}, {0, 0, 0, 0}};
int f2[4][4][N][N];
const int g2[3][3] = {{1, 1, 0}, {1, 0, 0}, {0, 0, 0}};
int f3[4][8][N][N];
const int g3[3][4] = {{1, 1, 0, 0}, {0, 0, 1, 0}, {0, 0, 0, 0}};
int f4[8][8][N][N];
const int g4[4][4] = {{1, 0, 0, 0}, {0, 1, 0, 0}, {0, 0, 1, 0}, {0, 0, 0, 0}};
signed main() {
for (int x = 1; ~x; --x) {
for (int y = 7; ~y; --y) {
for (int n = 0; n <= 500; ++n) {
for (int m = 0; m <= 500; ++m) {
memset(M, 0, sizeof(M));
for (int i = -1; i <= 1; ++i) {
for (int j = -1; j <= 3; ++j) {
if ((i == 1 ? !n : (i != -1 ? ((x >> i) & 1) : 0))) continue;
if ((j == 3 ? !m : (j != -1 ? ((y >> j) & 1) : 0))) continue;
int hv = 0;
if (~i) {
for (int k = 0; k <= 3 && !hv; ++k) hv |= (k == 3 ? m : !((y >> k) & 1)) && !g1[i][k];
}
if (~j) {
for (int k = 0; k <= 1 && !hv; ++k) hv |= (k == 1 ? n : !((x >> k) & 1)) && !g1[k][j];
}
if (!hv) continue;
int tx = (i == -1 || i == 1 ? x : x ^ (1 << i)), ty = (j == -1 || j == 3 ? y : y ^ (1 << j));
int tn = (i == 1 ? n - 1 : n), tm = (j == 3 ? m - 1 : m);
M[f1[tx][ty][tn][tm]] = 1;
}
}
while (M[f1[x][y][n][m]]) ++f1[x][y][n][m];
}
}
}
}
for (int x = 3; ~x; --x) {
for (int y = 3; ~y; --y) {
for (int n = 0; n <= 500; ++n) {
for (int m = 0; m <= 500; ++m) {
memset(M, 0, sizeof(M));
for (int i = -1; i <= 2; ++i) {
for (int j = -1; j <= 2; ++j) {
if ((i == 2 ? !n : (i != -1 ? ((x >> i) & 1) : 0))) continue;
if ((j == 2 ? !m : (j != -1 ? ((y >> j) & 1) : 0))) continue;
int hv = 0;
if (~i) {
for (int k = 0; k <= 2 && !hv; ++k) hv |= (k == 2 ? m : !((y >> k) & 1)) && !g2[i][k];
}
if (~j) {
for (int k = 0; k <= 2 && !hv; ++k) hv |= (k == 2 ? n : !((x >> k) & 1)) && !g2[k][j];
}
if (!hv) continue;
int tx = (i == -1 || i == 2 ? x : x ^ (1 << i)), ty = (j == -1 || j == 2 ? y : y ^ (1 << j));
int tn = (i == 2 ? n - 1 : n), tm = (j == 2 ? m - 1 : m);
M[f2[tx][ty][tn][tm]] = 1;
}
}
while (M[f2[x][y][n][m]]) ++f2[x][y][n][m];
}
}
}
}
for (int x = 3; ~x; --x) {
for (int y = 7; ~y; --y) {
for (int n = 0; n <= 500; ++n) {
for (int m = 0; m <= 500; ++m) {
memset(M, 0, sizeof(M));
for (int i = -1; i <= 2; ++i) {
for (int j = -1; j <= 3; ++j) {
if ((i == 2 ? !n : (i != -1 ? ((x >> i) & 1) : 0))) continue;
if ((j == 3 ? !m : (j != -1 ? ((y >> j) & 1) : 0))) continue;
int hv = 0;
if (~i) {
for (int k = 0; k <= 3 && !hv; ++k) hv |= (k == 3 ? m : !((y >> k) & 1)) && !g3[i][k];
}
if (~j) {
for (int k = 0; k <= 2 && !hv; ++k) hv |= (k == 2 ? n : !((x >> k) & 1)) && !g3[k][j];
}
if (!hv) continue;
int tx = (i == -1 || i == 2 ? x : x ^ (1 << i)), ty = (j == -1 || j == 3 ? y : y ^ (1 << j));
int tn = (i == 2 ? n - 1 : n), tm = (j == 3 ? m - 1 : m);
M[f3[tx][ty][tn][tm]] = 1;
}
}
while (M[f3[x][y][n][m]]) ++f3[x][y][n][m];
}
}
}
}
for (int x = 7; ~x; --x) {
for (int y = 7; ~y; --y) {
for (int n = 0; n <= 500; ++n) {
for (int m = 0; m <= 500; ++m) {
memset(M, 0, sizeof(M));
for (int i = -1; i <= 3; ++i) {
for (int j = -1; j <= 3; ++j) {
if ((i == 3 ? !n : (i != -1 ? ((x >> i) & 1) : 0))) continue;
if ((j == 3 ? !m : (j != -1 ? ((y >> j) & 1) : 0))) continue;
int hv = 0;
if (~i) {
for (int k = 0; k <= 3 && !hv; ++k) hv |= (k == 3 ? m : !((y >> k) & 1)) && !g4[i][k];
}
if (~j) {
for (int k = 0; k <= 3 && !hv; ++k) hv |= (k == 3 ? n : !((x >> k) & 1)) && !g4[k][j];
}
if (!hv) continue;
int tx = (i == -1 || i == 3 ? x : x ^ (1 << i)), ty = (j == -1 || j == 3 ? y : y ^ (1 << j));
int tn = (i == 3 ? n - 1 : n), tm = (j == 3 ? m - 1 : m);
M[f4[tx][ty][tn][tm]] = 1;
}
}
while (M[f4[x][y][n][m]]) ++f4[x][y][n][m];
}
}
}
}
int T; scanf("%d", &T);
int t = 0;
while (T--) {
int n, m; scanf("%d%d", &n, &m);
int a, b, c, d, e, f;
scanf("%d%d%d%d%d%d", &a, &b, &c, &d, &e, &f);
if (a == c && c == e) {
t ^= f1[0][0][n - 1][m - 3];
} else if (b == d && d == f) {
t ^= f1[0][0][n - 3][m - 1];
} else if ((a == c || a == e || c == e) && (b == d || b == f || d == f)) {
t ^= f2[0][0][n - 2][m - 2];
} else if (a == c || a == e || c == e) {
t ^= f3[0][0][n - 2][m - 3];
} else if (b == d || d == f ||b == f) {
t ^= f3[0][0][n - 3][m - 2];
} else {
t ^= f4[0][0][n - 3][m - 3];
}
}
if (t) puts("OvO"); else puts("QAQ");
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 1969ms
memory: 130616kb
input:
100000 215 4 6 1 59 1 71 4 1 482 1 311 1 381 1 26 3 428 3 81 2 359 1 310 222 220 108 40 16 2 11 79 4 223 4 73 4 103 3 51 214 442 174 261 186 418 202 379 146 464 61 193 85 102 117 206 3 1 3 1 2 1 1 1 357 356 199 222 97 15 257 15 30 2 28 2 4 1 12 2 308 308 32 110 56 157 234 171 347 346 243 89 166 140 ...
output:
OvO
result:
ok single line: 'OvO'
Test #2:
score: -100
Wrong Answer
time: 1891ms
memory: 130812kb
input:
100000 494 303 141 173 343 269 451 163 4 370 4 46 1 100 3 135 226 3 21 3 116 1 47 3 77 52 65 27 19 4 69 50 205 235 164 101 106 183 27 16 4 2 3 2 1 2 4 2 364 364 54 50 155 83 21 181 432 434 295 302 332 91 258 264 324 326 136 171 239 155 300 81 1 4 1 3 1 2 1 4 177 435 20 326 170 256 175 179 1 4 1 3 1 ...
output:
OvO
result:
wrong answer 1st lines differ - expected: 'QAQ', found: 'OvO'