- 僕の大っ嫌いなゲームの必勝法考える奴です。
- 本当に苦手なんで誰かゲームの必勝法がわかる必勝法とか教えてください。
- 今回は出てきませんでしたけどnimみたいなxorとか出てくるのできる気がしないんですよね。
- 深く考え過ぎて解説見たらただの場合分けとかあるし。
- そんな僕でも今回は寝ながら考え抜いた結果自力でAC出来ました!(嬉しい)
- この問題探索とかやっても数が大きい場合にはTLEしちゃうので簡単な必勝法があるはずですよね(制約を見てそう思いました)。
- あとは圧倒的なBの有利性。(ここで数が多い時はおおよそBが勝つんじゃないかと思いました)
- とすると、Bがいつ負けるのかを考えることに。。
- 元から箱の中のキャンディーの数が1個の時とかはいくらBでもキャンディーの数を有利にコントロールするのは無理そうですよね。
- ということは、全部1個のキャンディーしか無かったら箱の数に依存します。
- 他には無いかなー?なんて考えるとサンプル1がヒントですよ!
- Aが先手である事で唯一2個の箱があった場合はその2個の箱から1個取る事で勝てる時があります(その1個を取ってからは箱の個数で勝敗が別れます)
- こんな感じで考えると場合分けできるんじゃ無いですか?(もっと良い考え方はありそうだけど)
#include<bits/stdc++.h>
using namespace std;
int n;
int a[151],b[151];
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
int cont=0;
for(int i=0;i<n;i++){
if(a[i]!=0){
b[cont]=a[i];
cont++;
}
}
n=cont;
int gt2=0;
int eq2=0;
for(int i=0;i<n;i++){
if(b[i]==2){
eq2++;
}else if(b[i]>2){
gt2++;
}
}
if(gt2>0 || eq2>1){
cout<<"B"<<"\n";
}else if(eq2==1){
if(n&1){
cout<<"B"<<"\n";
}else cout<<"A"<<"\n";
}else{
if(n&1){
cout<<"A"<<"\n";
}else cout<<"B"<<"\n";
}
return 0;
}