QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#469795#7179. Fischer's Chess Guessing GamePedro_SimTL 0ms3616kbC++171.7kb2024-07-10 03:12:582024-07-10 03:12:58

Judging History

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

  • [2024-07-10 03:12:58]
  • 评测
  • 测评结果:TL
  • 用时:0ms
  • 内存:3616kb
  • [2024-07-10 03:12:58]
  • 提交

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> temp = resp;
    //string compa = "BQRNKRBN";
    for(int i = 0; i < 6; i++){
        string at = temp[0];
        cout << at << endl;
        fflush (stdout);
        int iguais=0;
        cin >> iguais;
        //for(int j = 0; j < 8; j++) if(compa[j] == at[j]) iguais++;
        if(iguais == 8) return;
        vector<string> nova;
        for(int j = 1; j < temp.size(); j++){
            int comp = 0;
            for(int k = 0; k < 8; k++) if(at[k] == temp[j][k]) comp++;
            if(comp == iguais) nova.push_back(temp[j]);
        }
        temp = nova;
    }
}

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);
        else continue;
    }
}

int main(){
    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: 0ms
memory: 3616kb

input:

GAME 1
0
1
2
2
8
END

output:

BBNNQRKR
NNBBRKRQ
NRKRBBQN
RKBRNNQB
RKRBBQNN

result:

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

Test #2:

score: -100
Time Limit Exceeded

input:

GAME 1
0
1
2
2
8
GAME 2
0
1
3
8
GAME 3
0
2
2
1
2
8
GAME 4
1
2
2
1
3
8
GAME 5
0
1
1
4
8
GAME 6
0
2
1
2
8
GAME 7
0
0
4
0
8
GAME 8
1
1
1
2
2
1

output:

BBNNQRKR
NNBBRKRQ
NRKRBBQN
RKBRNNQB
RKRBBQNN
BBNNQRKR
NNBBRKRQ
NRKRBBQN
RKRBBNQN
BBNNQRKR
NNBBRKRQ
NQRKBBRN
NRKRNBBQ
QNRKRNBB
RKRBBNNQ
BBNNQRKR
BNQBRKRN
BQRKNNRB
BRKRNBQN
NBRKRQBN
RKRBQNBN
BBNNQRKR
NNBBRKRQ
NRKRBBQN
RKBRNQNB
RKRBNQBN
BBNNQRKR
NNBBRKRQ
NQRKBBRN
NRKQRNBB
RKRBNNBQ
BBNNQRKR
NNBBRKRQ
QRK...

result: