洛谷P4136 誰能贏呢?

2022-05-02 11:45:14 字數 937 閱讀 3386

小明和小紅經常玩乙個博弈遊戲。給定乙個n×n的棋盤,乙個石頭被放在棋盤的左上角。他們輪流移動石頭。每一回合,選手只能把石頭向上,下,左,右四個方向移動一格,並且要求移動到的格仔之前不能被訪問過。誰不能移動石頭了就算輸。

假如小明先移動石頭,而且兩個選手都以最優策略走步,問最後誰能贏?

輸入格式:

輸入檔案有多組資料。

輸入第一行包含乙個整數n,表示棋盤的規模。

當輸入n為0時,表示輸入結束。

輸出格式:

對於每組資料,如果小明最後能贏,則輸出alice, 否則輸出bob, 每一組答案獨佔一行。

輸入樣例#1: 複製

2

0

輸出樣例#1: 複製

alice

對於20%的資料,保證1<=n<=10;

對於40%的資料,保證1<=n<=1000;

對於所有的資料,保證1<=n<=10000。

貌似是清北刷題班的原題,我記得當時在考場上還做出來了23333

就是找規律,沒啥好說的

#include#include

#include

#include

using

namespace

std;

const

int maxn=1e5+10,mod=10007

;inline

char

nc()

inline

intread()

while(c>='

0'&&c<='9')

return x*f;

}int

a[maxn];

intmain()

return0;

}

洛谷 P4136 誰能贏呢? 博弈論

小明和小紅經常玩乙個博弈遊戲。給定乙個n n的棋盤,乙個石頭被放在棋盤的左上角。他們輪流移動石頭。每一回合,選手只能把石頭向上,下,左,右四個方向移動一格,並且要求移動到的格仔之前不能被訪問過。誰不能移動石頭了就算輸。假如小明先移動石頭,而且兩個選手都以最優策略走步,問最後誰能贏?輸入格式 輸入檔案...

P4136 誰能贏呢? 腦子

我們發現,若我們把棋盤黑白染色並設左上角為黑色,那麼顯然有 若 n 為奇數,黑色格仔比白色多一 若 n 為偶數,黑色格仔與白色的相等。然後很顯然,如果他們能夠把所有格仔都走到或少走 2 x 個格仔 即不改變奇偶性 那麼上面的結論是成立的。若最後有奇數個格仔沒有走到,那麼其實我們可以在中間改變最終的狀...

洛谷P4136 誰能贏呢? 題解 博弈論

找規律首先這道題目我沒有什麼思路,所以一開始想到的是通過搜尋來列舉 n 比較小的時候的情況。所以我開搜尋列舉了 n le 8 的所有情況。搜尋 include using namespace std const int maxn 11 int n bool vis maxn maxn res max...