【bzoj2463】 谁能赢呢?
生活随笔
收集整理的這篇文章主要介紹了
【bzoj2463】 谁能赢呢?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
www.lydsy.com/JudgeOnline/problem.php?id=2463?(題目鏈接)
題意
一個n*n的棋盤,開始時左上角有一個棋子,每次可以把棋子向4個方向移動,但不能移動到曾經走過的格子上,無法移動者輸,問是否存在先手必勝策略。
Solution
手玩了一下n<=4的情況,發現當n是偶數時就有必勝策略,交上去果然AC。。然而不會證明,于是翻了下別人的題解。
當n為偶數時,可以被2*1的骨牌完全覆蓋,所以每次都走骨牌的另一端,而另一個?
人只能走新的骨牌,直到沒有為止?
當n為奇數時,去掉第一個格子后可以被2*1的骨牌完全覆蓋,所以勝負反過來了
很有道理阿有木有。
代碼
// bzoj2463 #include<algorithm> #include<iostream> #include<cstdlib> #include<cstring> #include<cstdio> #include<cmath> #define LL long long #define inf 2147483640 #define Pi acos(-1.0) #define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout); using namespace std;int main() {int n;while (scanf("%d",&n)!=EOF && n) {if (n&1) printf("Bob\n");else printf("Alice\n");}return 0; }
轉載于:https://www.cnblogs.com/MashiroSky/p/5914044.html
總結
以上是生活随笔為你收集整理的【bzoj2463】 谁能赢呢?的全部內容,希望文章能夠幫你解決所遇到的問題。