QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#552397 | #4234. Tic Tac Toe Counting | FinderHT | WA | 140ms | 5492kb | C++14 | 2.4kb | 2024-09-07 22:34:28 | 2024-09-07 22:34:28 |
Judging History
answer
#include<bits/stdc++.h>
#define gt getchar
#define pt putchar
#define int long long
#define ull unsigned long long
#define fst first
#define snd second
#define L(x) x<<1
#define R(x) x<<1|1
using namespace std;
typedef pair<int,int> pii;
const double eps=1e-8;
inline bool pts(char ch){return ch>=48&&ch<=57;}
inline int read(){
bool f=0;int x=0;char ch;
ch=gt();
while(!pts(ch)&&ch!=EOF){if(ch=='-')f=1;ch=gt();}
while(pts(ch)){x*=10;x+=(ch-48);ch=gt();}
if(f)return -x;
else return x;
}
template<class T>
inline void print(T x){
char s[114];
int top=0;
if(x<0)pt('-');
do{
top++;
if(x>=0)s[top]=(x%10)+48;
else s[top]=(-(x%10)+48);
x/=10;
}while(x);
while(top){pt(s[top]);top--;}
}
map<string,pii>ans;
int getfns(string s){
//行
if(s[0]==s[1]&&s[1]==s[2]){
if(s[0]=='X')return 1;
else if(s[0]=='O')return 2;
}
if(s[4]==s[3]&&s[5]==s[4]){
if(s[4]=='X')return 1;
else if(s[4]=='O')return 2;
}
if(s[6]==s[7]&&s[7]==s[8]){
if(s[6]=='X')return 1;
else if(s[6]=='O')return 2;
}
//列
if(s[0]==s[3]&&s[3]==s[6]){
if(s[3]=='X')return 1;
else if(s[3]=='O')return 2;
}
if(s[1]==s[4]&&s[4]==s[7]){
if(s[4]=='X')return 1;
else if(s[4]=='O')return 2;
}
if(s[2]==s[5]&&s[5]==s[8]){
if(s[2]=='X')return 1;
else if(s[2]=='O')return 2;
}
//对角线
if(s[0]==s[4]&&s[4]==s[8]){
if(s[0]=='X')return 1;
else if(s[0]=='O')return 2;
}
if(s[2]==s[4]&&s[4]==s[6]){
if(s[4]=='X')return 1;
else if(s[4]=='O')return 2;
}
return 0;
}
pii dfs(string s,char ch){
pii ff;
int flag=getfns(s);
//cout<<s<<'\n';
if(flag){
if(flag==1)ff.fst=1;
else ff.snd=1;
ans[s]=ff;
return ff;
}
for(int i=0;i<9;i++){
if(s[i]!='.')continue;
s[i]=ch;
pii tmp;
if(ch=='O')tmp=dfs(s,'X');
else tmp=dfs(s,'O');
ff.fst+=tmp.fst;
ff.snd+=tmp.snd;
s[i]='.';
}
ans[s]=ff;
return ff;
}
signed main(){
dfs(".........",'X');
int T=read();
while(T--){
string s;
cin>>s;
if(!ans[s].fst&&!ans[s].snd)cout<<-1<<' '<<-1<<'\n';
else cout<<ans[s].fst<<' '<<ans[s].snd<<'\n';
}
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 65ms
memory: 4352kb
input:
4 XX..O.... X...OX... OOOX.X.X. OOOXXX...
output:
191 194 232 200 0 1 -1 -1
result:
ok 4 lines
Test #2:
score: 0
Accepted
time: 132ms
memory: 4380kb
input:
100000 ......... ......... ......... ......... ......... ......... ......... ......... ......... ......... ......... ......... ......... ......... ......... ......... ......... ......... ......... ......... ......... ......... ......... ......... ......... ......... ......... ......... ......... ......
output:
131184 77904 131184 77904 131184 77904 131184 77904 131184 77904 131184 77904 131184 77904 131184 77904 131184 77904 131184 77904 131184 77904 131184 77904 131184 77904 131184 77904 131184 77904 131184 77904 131184 77904 131184 77904 131184 77904 131184 77904 131184 77904 131184 77904 131184 77904 1...
result:
ok 100000 lines
Test #3:
score: -100
Wrong Answer
time: 140ms
memory: 5492kb
input:
100000 ......... X........ O........ .X....... XX....... OX....... .O....... XO....... OO....... ..X...... X.X...... O.X...... .XX...... XXX...... OXX...... .OX...... XOX...... OOX...... ..O...... X.O...... O.O...... .XO...... XXO...... OXO...... .OO...... XOO...... OOO...... ...X..... X..X..... O.....
output:
131184 77904 14652 7896 -1 -1 14232 10176 -1 -1 1798 1276 -1 -1 2048 756 -1 -1 14652 7896 -1 -1 1832 1132 -1 -1 -1 -1 220 248 2048 756 268 144 -1 -1 -1 -1 1832 1132 -1 -1 1798 1276 220 248 -1 -1 -1 -1 -1 -1 -1 -1 14232 10176 -1 -1 1798 1276 -1 -1 -1 -1 264 188 1868 1080 239 126 -1 -1 -1 -1 -1 -1 312...
result:
wrong answer 1211th lines differ - expected: '0 0', found: '-1 -1'