Luogu P4136 誰能贏呢?

題目大意

給定一個 n×nn\times n 的矩陣,一個石頭被放在棋盤的左上角。兩人輪流移動石頭。每一回合,選手只能把石頭向上,下,左,右四個方向移動一格,並且要求移動到的格子之前不能被訪問過。誰不能移動石頭了就算輸。
  假如小明先移動石頭,而且兩個選手都以最優策略走步,問最後誰能贏?
  數據範圍 1n100001\leqslant n\leqslant 10000

題解

%  我們將棋盤黑白染色,可以發現,一位選手能到達的所有格子的顏色均相同,然後就沒有然後了,這是一個半廢掉的結論。
  我們考慮先手和後手交替行動一次,則棋盤的大小減小了 1×21\times 2,不對奇偶性產生影響,如果假定最終的棋盤上的每個格子都被走過,則最終勝負只與格子數量的奇偶性相關,即有偶數個格子的時候,先手必勝,反之先手必敗。
  那如果棋盤沒有被走完呢?可以發現,必勝方總有辦法在棋盤要被分成兩部分的時候,將棋盤分出一份偶數個格子的區域和另一份與原來棋盤格子數量奇偶性相同的區域,並且後續的決策只能在後面那塊區域中,換言之,必勝方總能找到策略維持他的優勢。
  所以……

代碼

#include<stdio.h>
int n;
int main(){
	while(~scanf("%d",&n)&&n)
		puts(n&1?"Bob":"Alice");
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章