QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#641406#7179. Fischer's Chess Guessing GamePedro_SimRE 283ms4036kbC++202.3kb2024-10-14 20:23:342024-10-14 20:23:35

Judging History

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

  • [2024-10-14 20:23:35]
  • 评测
  • 测评结果:RE
  • 用时:283ms
  • 内存:4036kb
  • [2024-10-14 20:23:34]
  • 提交

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: 4ms
memory: 4036kb

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: 283ms
memory: 3840kb

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: 262ms
memory: 3808kb

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

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: