QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#641408#7179. Fischer's Chess Guessing GamePedro_SimRE 286ms3832kbC++202.3kb2024-10-14 20:23:502024-10-14 20:23:50

Judging History

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

  • [2024-10-14 20:23:50]
  • 评测
  • 测评结果:RE
  • 用时:286ms
  • 内存:3832kb
  • [2024-10-14 20:23:50]
  • 提交

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) chute = currentState[rand()%(currentState.size())];
        

        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() {
    srand(time(0));
    cin.tie(0)->sync_with_stdio(0);
    string t;
    pre_cal();

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

详细

Test #1:

score: 100
Accepted
time: 2ms
memory: 3676kb

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: 286ms
memory: 3792kb

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: 275ms
memory: 3792kb

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: 275ms
memory: 3788kb

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: 278ms
memory: 3832kb

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: -100
Runtime Error

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: