QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#291811#7179. Fischer's Chess Guessing GameOAleksaWA 106ms3916kbC++142.3kb2023-12-27 08:45:362023-12-27 08:45:36

Judging History

你现在查看的是最新测评结果

  • [2023-12-27 08:45:36]
  • 评测
  • 测评结果:WA
  • 用时:106ms
  • 内存:3916kb
  • [2023-12-27 08:45:36]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
#define f first
#define s second
#define int long long
vector<char> sv = {'K', 'Q', 'N', 'N', 'B', 'B', 'R', 'R'};
vector<string> perm;
int good(vector<char> ord) {
	int x = -1, y = -1, z = -1, b = -1, a = -1;
	for (int i = 0;i < 8;i++) {
		if (ord[i] == 'K')
			z = i;
		else if (ord[i] == 'B') {
			if (x == -1)
				x = i;
			else
				y = i;
		}
		else if (ord[i] == 'R') {
			if (a == -1)
				a = i;
			else
				b = i;
		}
	}
	return z < b && z > a && x % 2 != y % 2;
};
int diff(string a, string b) {
	int r = 0;
	for (int i = 0;i < 8;i++)
		r += (a[i] == b[i]);
	return r;
};
void resi(string ans, int g, vector<pair<string, int>> &pr) {
	cout << ans << endl;
	int r;
	cin >> r;
	if (r == 8 || g > 6)
		return;
	pr.push_back({ans, r});
	vector<string> temp;
	for (auto x : perm) {
		int ok = 1;
		for (auto u : pr) 
			ok &= (diff(u.f, x) == u.s);
		if (ok)
			temp.push_back(x);
	}
	int mn = 1e9;
	for (auto u : temp) {
		vector<int> cnt(10);
		int mx = 0;
		for (auto x : temp) 
			mx = max(mx, ++cnt[diff(u, x)]);
		if (mx < mn) {
			mn = mx;
			ans = u;
		}
	}
	resi(ans, g + 1, pr);
}
signed main() {
	ios_base::sync_with_stdio(false);
  cout.tie(nullptr); 
  cin.tie(nullptr);
  //freopen("newbarn.in", "r", stdin);
  //freopen(newbarn.out", "w", stdout);
  int tt = 1;
  //cin >> tt;
  while (tt--) {
  	vector<int> order(8);
  	iota(order.begin(), order.end(), 0);
  	map<string, int> bio;
  	do {
  		vector<char> t;
  		for (int i = 0;i < 8;i++)
  			t.push_back(sv[order[i]]);
  		if (good(t)) {
  			string s;
  			for (auto x : t)
  				s += x;
  			if (bio[s])
  				continue;
  			bio[s] = 1;
  			perm.push_back(s);
  		}
  	} while (next_permutation(order.begin(), order.end()));
  	int mx = 1e9;
  	string ans;
  	for (int i = 0;i < 960;i++) {
  		vector<int> cnt(10);
  		int l = 0;
  		for (int j = 0;j < 960;j++) {
  			if (i == j)
  				continue;
  			l = max(l, ++cnt[diff(perm[i], perm[j])]);
  		}
  		if (l < mx) {
  			ans = perm[i];
  			mx = l;
  		}
  	}
  	while (true) {
  		string s;
  		cin >> s;
  		if (s == "GAME") {
  			cin >> s;
  			vector<pair<string, int>> t;
  			resi(ans, 0, t);
  		}
  		else
  			break;
  	}
  }
  return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 17ms
memory: 3692kb

input:

GAME 1
2
2
1
8
END

output:

NRNBBKQR
RNQNBBKR
BBQRNKNR
RKRBBQNN

result:

ok (c) correct after 1 tests, max moves 4 (1 test case)

Test #2:

score: 0
Accepted
time: 105ms
memory: 3700kb

input:

GAME 1
2
2
1
8
GAME 2
3
2
3
0
8
GAME 3
2
2
1
6
8
GAME 4
1
0
2
4
8
GAME 5
1
0
3
4
2
8
GAME 6
1
0
3
2
8
GAME 7
1
1
0
3
5
8
GAME 8
2
4
0
5
8
GAME 9
1
1
1
4
8
GAME 10
1
2
2
1
2
8
GAME 11
1
2
1
5
8
GAME 12
2
3
4
3
8
GAME 13
0
2
6
4
8
GAME 14
0
3
1
0
8
GAME 15
0
2
4
3
5
8
GAME 16
0
1
4
3
5
8
GAME 17
0
2
2...

output:

NRNBBKQR
RNQNBBKR
BBQRNKNR
RKRBBQNN
NRNBBKQR
NRKQBBRN
RBNQBNKR
NBBQRKNR
RKRBBNQN
NRNBBKQR
RNQNBBKR
BBQRNKNR
RKRBBQNN
RKRBBNNQ
NRNBBKQR
BQNRKRNB
QNRKNBBR
RNKBRQBN
RKRBQNBN
NRNBBKQR
BQNRKRNB
QNRKNBBR
NBRKRQBN
QBRKBNRN
RKRBNQBN
NRNBBKQR
BQNRKRNB
QNRKNBBR
NBRKRQBN
RKRBNNBQ
NRNBBKQR
BQNRKRNB
QBBNNRKR
BNR...

result:

ok (c) correct after 96 tests, max moves 6 (96 test cases)

Test #3:

score: 0
Accepted
time: 106ms
memory: 3704kb

input:

GAME 1
3
1
3
3
2
8
GAME 2
4
2
4
4
8
GAME 3
5
3
3
3
8
GAME 4
2
3
1
8
GAME 5
3
0
3
3
8
GAME 6
3
0
4
2
8
GAME 7
2
6
8
GAME 8
3
3
2
1
1
8
GAME 9
4
2
3
8
GAME 10
1
0
4
3
2
8
GAME 11
2
3
1
5
8
GAME 12
2
4
1
8
GAME 13
1
2
0
5
5
8
GAME 14
2
2
2
2
0
8
GAME 15
1
2
1
1
2
8
GAME 16
0
2
2
8
GAME 17
0
3
2
1
8
GAM...

output:

NRNBBKQR
NRKQBBRN
NQBBRNKR
QBNRBNKR
NBBRQKNR
RKQBBNNR
NRNBBKQR
BNRBNKQR
QBNRBKNR
QRKBBNNR
RKNBBQNR
NRNBBKQR
NRKBBQNR
QRNBNKBR
NNBBRKQR
RKNBBNQR
NRNBBKQR
RNQNBBKR
RBKNBRQN
RKQBNNBR
NRNBBKQR
NRKQBBRN
QBNRNKBR
BQNBNRKR
RKNBQNBR
NRNBBKQR
NRKQBBRN
QBNRNKBR
BBNRKNQR
RKNBNQBR
NRNBBKQR
RNQNBBKR
RKQNBBNR
NRN...

result:

ok (c) correct after 96 tests, max moves 6 (96 test cases)

Test #4:

score: 0
Accepted
time: 91ms
memory: 3692kb

input:

GAME 1
2
2
2
0
8
GAME 2
4
1
5
4
8
GAME 3
3
5
5
4
8
GAME 4
2
1
3
3
8
GAME 5
3
4
3
2
8
GAME 6
4
1
6
8
GAME 7
1
1
2
4
8
GAME 8
2
1
1
2
6
8
GAME 9
2
1
2
3
8
GAME 10
1
2
4
8
GAME 11
2
0
3
5
8
GAME 12
2
0
4
4
8
GAME 13
2
0
0
6
8
GAME 14
3
3
1
3
2
8
GAME 15
2
0
0
5
8
GAME 16
1
2
2
2
2
8
GAME 17
2
2
1
1
4
8...

output:

NRNBBKQR
RNQNBBKR
BBQRNKNR
NBBQRNKR
QRKRBBNN
NRNBBKQR
BNRBNKQR
NRKNBRQB
NRKBBRNQ
NRKRBBQN
NRNBBKQR
NRKQBBRN
NRKQBRNB
NRKNBQRB
NRKRBBNQ
NRNBBKQR
RNQNBBKR
QRBNNKRB
NRKNQRBB
QRKRBNNB
NRNBBKQR
NRKQBBRN
NRKNQBBR
NNRQBBKR
NRKRBQNB
NRNBBKQR
BNRBNKQR
NRKNBRQB
NRKRBNQB
NRNBBKQR
BQNRKRNB
QBBNNRKR
QRKNRNBB
QRK...

result:

ok (c) correct after 96 tests, max moves 6 (96 test cases)

Test #5:

score: -100
Wrong Answer
time: 24ms
memory: 3916kb

input:

GAME 1
1
2
1
4
4
8
GAME 2
0
1
5
3
8
GAME 3
1
1
0
4
4
8
GAME 4
1
3
2
3
1
8
GAME 5
0
0
2
3
8
GAME 6
1
2
2
0
8
GAME 7
0
2
3
3
8
GAME 8
1
1
4
4
8
GAME 9
0
1
2
1
8
GAME 10
1
2
2
0
2
8
GAME 11
3
2
4
3
4
8
GAME 12
2
2
2
1
2
2

output:

NRNBBKQR
BQNRKRNB
BRQKNNRB
RKNNRQBB
RKNRNBBQ
RQNKRBBN
NRNBBKQR
BBRNKQRN
RKQRNBBN
RKBRQBNN
RNQKRBBN
NRNBBKQR
BQNRKRNB
QBBNNRKR
BNRKRBQN
NNRKRQBB
RNNKRBBQ
NRNBBKQR
BQNRKRNB
BQRKNBNR
RNQKBRNB
BNQRNKRB
RQNKRNBB
NRNBBKQR
BBRNKQRN
RKBQNRNB
RNKRNBBQ
RNQKRNBB
NRNBBKQR
BQNRKRNB
BRQKNNRB
BQRNNBKR
RNNKRQBB
NRN...

result:

wrong answer (i) too many guesses in game 12, pos = 0