QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#73515 | #4884. Battleship: New Rules | aurelion_sol | Compile Error | / | / | C++14 | 2.9kb | 2023-01-25 15:02:03 | 2023-01-25 15:02:06 |
Judging History
你现在查看的是最新测评结果
- [2023-08-10 23:21:45]
- System Update: QOJ starts to keep a history of the judgings of all the submissions.
- [2023-01-25 15:02:06]
- 评测
- 测评结果:Compile Error
- 用时:0ms
- 内存:0kb
- [2023-01-25 15:02:03]
- 提交
answer
#include <bits/stdc++.h>
using namespace std;
void answer(int x, int y) {
if (x >= 0 || y >= 0) {
x++, y++;
}
cout << "! " << x << " " << y << endl;
int ans;
cin >> ans;
if (ans != 1) {
exit(0);
}
}
vector<vector<int>> cache;
int ask(int x, int y) {
if (x >= (int)cache.size() || y >= (int)cache.size() || x < 0 || y < 0) {
return 0;
}
cout << "? " << x + 1 << " " << y + 1 << endl;
int ans;
cin >> ans;
if (ans == -1) {
exit(0);
}
cache[x][y] = ans;
return ans;
}
vector<vector<bool>> used;
void color4(int x, int y) {
for (int dx = 0; dx < 2; dx++) {
for (int dy = 0; dy < 2; dy++) {
used[x + dx][y + dy] = true;
}
}
}
bool upd(int x, int y) {
bool res = true;
for (int dx = 0; dx < 2; dx++) {
for (int dy = 0; dy < 2; dy++) {
if (ask(x - dx, y - dy) == 1) {
color4(x - dx, y - dy);
res = false;
}
}
}
return res;
}
pair<int, int> func(int x1, int y1, int x2, int y2) {
if (x2 - x1 == 1 && y2 - y1 == 1) {
return make_pair(x1, y1);
}
tuple<int, int, int, int> r1, r2;
if (x2 - x1 >= y2 - y1) {
int mid = (x1 + x2) / 2;
for (int i = y1; i < y2; i++) {
if (upd(mid, i)) {
return make_pair(mid, i);
}
}
r1 = make_tuple(x1, y1, mid, y2);
r2 = make_tuple(mid + 1, y1, x2, y2);
} else {
int mid = (y1 + y2) / 2;
for (int i = x1; i < x2; i++) {
if (upd(i, mid)) {
return make_pair(i, mid);
}
}
r1 = make_tuple(x1, y1, x2, mid);
r2 = make_tuple(x1, mid + 1, x2, y2);
}
int s1 = 0;
for (int i = get<0>(r1); i < get<2>(r1); i++) {
for (int j = get<1>(r1); j < get<3>(r1); j++) {
if (!used[i][j]) {
s1++;
}
}
}
if (s1 % 2 == 1) {
return func(get<0>(r1), get<1>(r1), get<2>(r1), get<3>(r1));
} else {
return func(get<0>(r2), get<1>(r2), get<2>(r2), get<3>(r2));
}
}
void solve(int n) {
used.clear();
used.reserve(n + 1);
for (int i = 0; i < n + 1; i++) {
used.emplace_back(vector<bool>(n + 1, false));
}
pair<int, int> t = func(0, 0, n + 1, n + 1);
answer(t.first - 1, t.second - 1);
}
void solve_full(int n) {
if (n % 2 == 1) {
answer(-1, -1);
return;
}
cache.clear();
cache.reserve(n);
for (int i = 0; i < n; i++) {
cache.emplace_back(vector<int>(n, -1));
}
solve(n);
}
int main() {
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int t;
cin >> t;
if(T!=100)exit(0);
while (t--) {
int n;
cin >> n;
solve_full(n);
}
return 0;
}
详细
answer.code: In function ‘int main()’: answer.code:123:12: error: ‘T’ was not declared in this scope 123 | if(T!=100)exit(0); | ^