bzoj 1299 巧克力棒 博弈論

2021-07-31 03:54:25 字數 424 閱讀 7022

不考慮從盒子中拿出這一操作,則剩下的部分就是乙個nim遊戲。所以先手第一次只要拿到異或和為零的巧克力棒就必勝。因為若對手選擇吃巧克力棒,則是必敗局面。若選擇拿出巧克力,則新的異或和一定不為零,因為如果一組巧克力異或和為零,則先手可以第一次的時候拿出來。

直接dfs就可以。

#include

#include

using

namespace

std;

int n;

int a[20];

bool can;

void dfs(int x,int xor,int cnt)

dfs(x+1,xor^(a[x]),cnt+1);

dfs(x+1,xor,cnt);

}int main()

}

BZOJ1299 巧克力棒

題面 tbl和x用巧克力棒玩遊戲。每次一人可以從盒子裡取出若干條巧克力棒,或是將一根取出的巧克力棒吃掉正整數長度。tbl先手兩人輪流,無法操作的人輸。他們以最佳策略一共進行了10輪 每次一盒 你能 勝負嗎?如果勝則輸出 no 否則輸出 yes 解 nim白學.考慮第乙個人第一步要幹什麼能夠必勝。顯然...

bzoj1299 LLH邀請賽 巧克力棒 博弈

先從n根巧克力棒中取出m m 0 根,使得這m根巧克力棒的xor和為0 也就是把nim遊戲的必敗狀態留給對方 同時使得剩下的n m根巧克力棒無論怎麼取,xor和都不為0。實際上m就是巧克力棒的xor和為0的最長子序列 這麼一來,對手就面臨乙個必敗狀態的nim遊戲。如果他從n m根中取新的巧克力棒,實...

BZOJ 1299 LLH邀請賽 巧克力棒

演算法 博弈論 題解 這道題不是典型的sg函式題了。不把它當成遊戲看待,那麼這道題是在說n個石子堆,每次可以加入若干個或進行nim遊戲。我們當前先手,則考慮構造必敗態來獲勝。當前已加入的nim遊戲sg 0,則必須考慮加入石子堆,若加入m堆構造出sg 0,對方有兩種選擇 加入新的石子堆,則必須是sg ...