QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#291856#7179. Fischer's Chess Guessing GameOAleksaWA 79ms4192kbC++142.8kb2023-12-27 10:02:522023-12-27 10:02:53

Judging History

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

  • [2023-12-27 10:02:53]
  • 评测
  • 测评结果:WA
  • 用时:79ms
  • 内存:4192kb
  • [2023-12-27 10:02:52]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
#define f first
#define s second
#define int long long
const int N = 960;
vector<int> g(N);
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;
};
string ans;
void resi(int r) {
	for (int i = 0;i < N;i++) 
		if (diff(perm[i], ans) != r) 
			g[i] = false;
	int mn = 1e9;
	for (int i = 0;i < N;i++) {
		if (!g[i])
			continue;
		int mx = -1;
		vector<int> cnt(10);
		for (int j = 0;j < N;j++) {
			if (!g[j])
				continue;
			mx = max(mx, ++cnt[diff(perm[i], perm[j])]);
		}
		if (mx < mn) {
			mn = mx;
			ans = perm[i];
		}
	}
	//cout << mn << " " << x << endl;
}
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;
  	string s = "KQRRBBNN";
  	 while (next_permutation(order.begin(),order.end()))
    {
        string s1="........";
        for (int i=0;i<8;i++)
            s1[i]=s[order[i]];
        int r=0,b=-1;
        bool yes=true;
        for (int i=0;i<8;i++)
        {
            if (s1[i]=='K' && r!=1)
            {
                yes=false;
                break;
            }
            if (s1[i]=='B' && b!=-1 && b==(i%2))
            {
                yes=false;
                break;
            }
            if (s1[i]=='R')
                r++;
            if (s1[i]=='B' && b==-1)
                b=(i%2);
        }
        if (yes && !bio[s1])
            perm.push_back(s1);
        bio[s1] = 1;
    }
  	int mx = 1e9;
  	string ans1;
  	for (int i = 0;i < N;i++) {
  		vector<int> cnt(10);
  		int l = 0;
  		for (int j = 0;j < N;j++) 
  			l = max(l, ++cnt[diff(perm[i], perm[j])]);
  		if (l < mx) {
  			ans1 = perm[i];
  			mx = l;
  		}
  	}
  	while (true) {
  		string s;
  		cin >> s;
  		if (s == "GAME") {
  			ans = ans1;
  			for (int i = 0;i < N;i++)
  				g[i] = 1;
  			cin >> s;
  			int c = 0;
  			while (true) {
  				cout << ans << endl;
  				c++;
  				int r;
  				cin >> r;
  				if (r == 8 || c > 6)
  					break;
  				resi(r);
  			}
  		}
  		else
  			break;
  	}
  }
  return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 16ms
memory: 3972kb

input:

GAME 1
4
3
3
8
END

output:

RQKBBNRN
RQKNBRNB
QRKBBNNR
RKRBBQNN

result:

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

Test #2:

score: 0
Accepted
time: 79ms
memory: 4044kb

input:

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

output:

RQKBBNRN
RQKNBRNB
QRKBBNNR
RKRBBQNN
RQKBBNRN
RKNBBQRN
RBKNBQRN
RKRBBNQN
RQKBBNRN
RQKNBRNB
QRKBBNNR
QRKNBBRN
RKRBBNNQ
RQKBBNRN
RQKNBRNB
RNBBKQRN
BQNBRKRN
RKRBQNBN
RQKBBNRN
NRBBQKRN
RKNBQNBR
QRNBBNKR
RKQBNRBN
RKRBNQBN
RQKBBNRN
NRBBQKRN
RKNRBBQN
RKQBNNBR
RKRBNNBQ
RQKBBNRN
NRBBQKRN
RKNRBBQN
RKRQBBNN
RQK...

result:

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

Test #3:

score: 0
Accepted
time: 50ms
memory: 4192kb

input:

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

output:

RQKBBNRN
RQKNBRNB
QRKBBNNR
RKQBBNNR
RQKBBNRN
NRBBQKRN
RKNRBBQN
RKNBBQNR
RQKBBNRN
RQKNBRNB
RKNQBBRN
RQBKNBRN
RKNBBNQR
RQKBBNRN
NRBBQKRN
RKNRBBQN
RKQBNNBR
RQKBBNRN
NRBBQKRN
RKNBQNBR
RQKBBNRN
RKBBNQNR
RNBBNQKR
RKNBNQBR
RQKBBNRN
RKBBNQNR
RKNRBQNB
RKQNBBNR
RQKBBNRN
RKBBNQNR
RKNRBQNB
RKBRQNNB
RKNQBBNR
RQK...

result:

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

Test #4:

score: -100
Wrong Answer
time: 48ms
memory: 4048kb

input:

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

output:

RQKBBNRN
NRBBQKRN
RKNBQNBR
BQRKNBRN
QRKRBBNN
RQKBBNRN
NRBBQKRN
RBBKNQRN
BRKNQNRB
NQNRBKRB
NRKRBBQN
RQKBBNRN
RKBBNQNR
BRKNNBRQ
BRKRQBNN
QRKRNBBN
NRKRBBNQ
RQKBBNRN
NRBBQKRN
RKNRBBQN
RKQBNNBR
QRKRBNNB
RQKBBNRN
RKBBNQNR
RNKNRQBB
RKNQRBBN
NRKRBQNB
RQKBBNRN
NRBBQKRN
RKNBQNBR
BQRBKRNN
RNQNBKRB
NRKRBNQB
RQK...

result:

wrong answer (i) too many guesses in game 42, pos = \x10l