以下の内容はhttps://kmjp.hatenablog.jp/entry/2026/03/27/0900より取得しました。


yukicoder : No.3484 Just a Maze Game

自力で解き切れてよかったね。
https://yukicoder.me/problems/no/3484

問題

正整数R,C,B,Wが与えられ、2人でゲームを行う。
先手は、R*CのグリッドのうちB個黒マス、W個白マスで埋める。
その後、後手は白マスを3つ選び、うち2つをスタートとゴールとし、後1個を黒くする。
この時、スタートマスからゴールマスまで先手が隣接白マスをたどって移動できれば先手の勝ち、できなければ後手の勝ちである。

両者最適手を取るとき、勝者はどちらか。

解法

白マスが1マス飛び出た形状があると、そことその隣接マスをスタートと黒マスに指定され後手の勝ちとなる。
R≦Cとなるよう回転しておくと、後手が勝ちとなるのは以下のケースである。

  • R=1の時。
  • R=2かつWが奇数の時。
  • Rが3以上かつWが7以下の奇数の時。
int T;
int H,W;
int A,B;

void solve() {
	int i,j,k,l,r,x,y; string s;
	
	cin>>T;
	while(T--) {
		cin>>H>>W>>A>>B;
		if(H<W) swap(H,W);
		if(W==1) {
			cout<<"Bob"<<endl;
			continue;
		}
		if(W==2) {
			if(B%2==0) {
				cout<<"Alice"<<endl;
			}
			else {
				cout<<"Bob"<<endl;
			}
			continue;
		}
		if(B<=7&&B%2==1) {
			cout<<"Bob"<<endl;
		}
		else {
			cout<<"Alice"<<endl;
		}
	}
}

まとめ

こういうの場合分けに漏れがありそうで怖いな。
今回は幸い一発ACでした。




以上の内容はhttps://kmjp.hatenablog.jp/entry/2026/03/27/0900より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14