QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#641386#7179. Fischer's Chess Guessing GamePedro_SimML 284ms3964kbC++202.4kb2024-10-14 20:17:202024-10-14 20:17:21

Judging History

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

  • [2024-10-14 20:17:21]
  • 评测
  • 测评结果:ML
  • 用时:284ms
  • 内存:3964kb
  • [2024-10-14 20:17:20]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rp(i,a,b)        for(int i=a;i<b;i++)

vector<string> resp;

bool veri(string &t) {
    int te = -1;
    rp(i, 0, 8){
        if(te >= 0 && t[i] == 'B' && (i%2) == (te%2)) return false;
        else if(t[i] == 'B') te = i;
    }
    rp(i, 0, 8){
        if(t[i] == 'K'){
            bool flag1 = true, flag2 = true;
            rp(j, 0, i) if(t[j] == 'R') flag1 = false;
            rp(j, i, 8) if(t[j] == 'R') flag2 = false;
            if(flag1 || flag2) return false;
            break;
        }
    }
    return true;
}

void solvetask() {
    int n;
    cin >> n;

    vector<string> currentState = resp; 
    string best;
    for(int turn = 0; turn < 6; turn++) {
        int mx = 1e9;
        string chute;
        for (auto &comp : currentState) {
            vector<int> bins(9, 0); 
                
            for (auto &candidate : currentState) {
                int matches = 0;
                rp(k, 0, 8)  if (comp[k] == candidate[k]) matches++;
                bins[matches]++;
            }
                
            int melhorbin = *max_element(bins.begin(), bins.end());
            if (melhorbin < mx) {
                mx = melhorbin;
                chute = comp;
            }
        }

        if(turn == 5){
            random_device rd;
            mt19937 gen(rd());
            uniform_int_distribution<> dis(0, currentState.size() - 1);
            chute = currentState[dis(gen)];
        } 

        cout << chute << endl;
        fflush(stdout);
        int iguais=0;
        cin >> iguais;
        //rp(k, 0, 8) if (chute[k] == original[k]) iguais++;
        if (iguais == 8) break;

        vector<string> newState;
        for (auto &comp : currentState) {
            int matches = 0;
            rp(k, 0, 8) if (comp[k] == chute[k]) matches++;
            if (matches == iguais) newState.push_back(comp);
        }
        currentState = newState;
    }
}

void pre_cal() {
    string temp = "BBQKNNRR";
    sort(temp.begin(), temp.end());
    while(next_permutation(temp.begin(), temp.end())) if(veri(temp)) resp.push_back(temp);
}

int main() {
    cin.tie(0)->sync_with_stdio(0);
    string t;
    pre_cal();

    while (true) {
        cin >> t;
        if (t == "END") return 0; 
        solvetask();
    }
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 4ms
memory: 3780kb

input:

GAME 1
1
2
2
1
2
8
END

output:

NRBBNKQR
BNRKQBNR
RNBQKRNB
BRNQKBRN
QNRNBKRB
RKRBBQNN

result:

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

Test #2:

score: 0
Accepted
time: 270ms
memory: 3964kb

input:

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

output:

NRBBNKQR
BNRKQBNR
RNBQKRNB
BRNQKBRN
QNRNBKRB
RKRBBQNN
NRBBNKQR
RBBNKQNR
QRKNNRBB
NBNRBKRQ
BQNBRNKR
RKRBBNQN
NRBBNKQR
BNRKQBNR
RNBQKRNB
BRNQKBRN
RBKNBQNR
RKRBBNNQ
NRBBNKQR
BNRKQBNR
RNBQKRNB
BBNQRNKR
QBRKNRBN
RKRBQNBN
NRBBNKQR
RBBNKQNR
NBNQBRKR
BRKBRQNN
QRBKRNNB
RKRBNQBN
NRBBNKQR
RBBNKQNR
QRKNNRBB
NRK...

result:

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

Test #3:

score: 0
Accepted
time: 278ms
memory: 3752kb

input:

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

output:

NRBBNKQR
RBBNKQNR
RKBNNBRQ
BRKNQBNR
RBKQNNBR
RKQBBNNR
NRBBNKQR
RBBNKQNR
BBRNNQKR
RKNBBQNR
NRBBNKQR
NRBQKBRN
RBNNBKQR
RBQNNKBR
RKNBBNQR
NRBBNKQR
NRBQKBRN
RBNNBKQR
BNRBQKNR
RKQBNNBR
NRBBNKQR
RBBNKQNR
NBNQBRKR
BRNNKRQB
NNQRKBBR
RKNBQNBR
NRBBNKQR
NRBQKBRN
RBNNBKQR
BBQRNKNR
QNNBRKBR
RKNBNQBR
NRBBNKQR
BNR...

result:

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

Test #4:

score: 0
Accepted
time: 262ms
memory: 3664kb

input:

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

output:

NRBBNKQR
BNRKQBNR
RNBQKRNB
BBNQRNKR
QRKRBBNN
NRBBNKQR
NRBQKBRN
NBBRQKRN
NRKBBQRN
NRKRBBQN
NRBBNKQR
RBBNKQNR
QRKNNRBB
NRKRBBNQ
NRBBNKQR
BNRKQBNR
RBQKNRBN
BQNNRKRB
QRKRBNNB
NRBBNKQR
RBBNKQNR
NBNQBRKR
BRNNKRQB
BQRNNBKR
NRKRBQNB
NRBBNKQR
NRBQKBRN
BRKBNNRQ
BRNBKQNR
NNRBBKRQ
NRKRBNQB
NRBBNKQR
RBBNKQNR
NRK...

result:

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

Test #5:

score: 0
Accepted
time: 276ms
memory: 3660kb

input:

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

output:

NRBBNKQR
RKNNRQBB
RBKNRNBQ
RKNNBBRQ
RQNKRBBN
NRBBNKQR
RKNNRQBB
QNRKRNBB
QNNRKRBB
RNQKRBBN
NRBBNKQR
RKNNRQBB
RBKNRNBQ
RNKNQRBB
RNNKRBBQ
NRBBNKQR
RKNNRQBB
RKNRQNBB
RKNRBQNB
RQNKRNBB
NRBBNKQR
RKNNRQBB
RBKNRNBQ
RNKNQRBB
RNQKRNBB
NRBBNKQR
RKNNRQBB
RKNNRBBQ
RNKNRQBB
RNNKRQBB
NRBBNKQR
BNRKQBNR
BQRKNNRB
BBN...

result:

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

Test #6:

score: 0
Accepted
time: 279ms
memory: 3724kb

input:

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

output:

NRBBNKQR
NRBQKBRN
NRBQKRNB
QRBKNBRN
NRBBNKQR
NRBQKBRN
NRBKQBRN
NRBBNKQR
BRNBQKNR
NBBRNQKR
NRBKNBRQ
NRBBNKQR
NRBQKBRN
RNBBQKRN
NRQNBKRB
NRBKQRNB
QRBKNNRB
NRBBNKQR
NRBQKBRN
NBBRQKRN
NNBQRKRB
NRBKQNRB
NRBBNKQR
BRNBQKNR
NBBRNQKR
NQBRNKRB
NRBKNQRB
NRBBNKQR
BNRKQBNR
RNBQKRNB
NBRKBNRQ
QRNKBBRN
NRBBNKQR
RBB...

result:

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

Test #7:

score: 0
Accepted
time: 284ms
memory: 3656kb

input:

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

output:

NRBBNKQR
BNRKQBNR
RBQKNRBN
NBRQKRBN
RBBQKRNN
NRBBNKQR
RBBNKQNR
RBBKQNNR
RBBNKRQN
NRBBNKQR
BNRKQBNR
RBQKNRBN
NBRNKRBQ
RBBNKRNQ
NRBBNKQR
RKNNRQBB
QNRKRNBB
RBKNQRBN
RBQNKRBN
NRBBNKQR
RKNNRQBB
QNRKRNBB
RBKNQRBN
RBNQKRBN
NRBBNKQR
RKNNRQBB
RBKNRNBQ
RBNNKRBQ
NRBBNKQR
RBBNKQNR
BBRNNQKR
RNBBKRNQ
RQBBKRNN
NRB...

result:

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

Test #8:

score: 0
Accepted
time: 270ms
memory: 3912kb

input:

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

output:

NRBBNKQR
NRBQKBRN
BRKBNNRQ
BRNBKQNR
QRNBKNBR
NRBBNKQR
BRNBQKNR
RNQBNKBR
NRQBKNBR
NRBBNKQR
BRNBQKNR
BRNKNBQR
NRNBBQKR
NRNBKQBR
NRBBNKQR
RBBNKQNR
RKBNNBRQ
BRKNQBNR
BNRNKBQR
QRNNKBBR
NRBBNKQR
NRBQKBRN
NBBRQKRN
NRNQBBKR
NRQNKBBR
NRBBNKQR
NRBQKBRN
NRBQKRNB
NRNQKBBR
NRBBNKQR
RKNNRQBB
BBQRKRNN
BBQRKNRN
BBR...

result:

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

Test #9:

score: -100
Memory Limit Exceeded

input:

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

output:

NRBBNKQR
RBBNKQNR
RBBKQNNR
QBBRKNNR
NRBBNKQR
NRBQKBRN
RNBBQKRN
NBBQRNKR
NBBRKQNR
NRBBNKQR
BRNBQKNR
NBBRNQKR
NBBRKNQR
NRBBNKQR
BNRKQBNR
RBQKNRBN
QBRNBKRN
RBNQBNKR
QBNRKNBR
NRBBNKQR
RBBNKQNR
RKBNNBRQ
BBNRQKNR
BQRBKNNR
NBQRKNBR
NRBBNKQR
RBBNKQNR
BBRNNQKR
RKBNNQRB
BRQNKBNR
NBNRKQBR
NRBBNKQR
RBBNKQNR
BBR...

result: