bzoj1299 LLH邀請賽 巧克力棒 博弈

2021-06-28 00:15:31 字數 547 閱讀 8134

先從n根巧克力棒中取出m(m>0)根,使得這m根巧克力棒的xor和為0(也就是把nim遊戲的必敗狀態留給對方),同時使得剩下的n-m根巧克力棒無論怎麼取,xor和都不為0。(實際上m就是巧克力棒的xor和為0的最長子序列)。

這麼一來,對手就面臨乙個必敗狀態的nim遊戲。如果他從n-m根中取新的巧克力棒,實際上就是新建乙個xor和不為0的nim遊戲,這時輪到己方操作只要將這個新的nim遊戲取到xor和為0即可。(也就是讓對方再次面臨所有nim遊戲均為必敗狀態的局面)。

尋找是否有xor和=0的巧克力棒子序列,直接dfs無壓力。

#include#include#includeusing namespace std;

int n,a[2001];

bool found;

int dfs(int x,int used,int now)

dfs(x+1,used,now);

dfs(x+1,used+1,now^a[x]);

}int main()

return 0;

}

BZOJ 1299 LLH邀請賽 巧克力棒

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

BZOJ 1299 LLH邀請賽 巧克力棒

如果沒有拿巧克力棒的操作的話 是乙個裸的nim遊戲 現在加入了這個操作 改變了異或的值 那麼我們只需要判斷先手的人是否可以從集合中取出乙個極大的異或值為0的子集即可 include include include include include include using namespace std...

LLH邀請賽 參觀路線

很奇妙的一題,實際上如果你寫過類似的題目並不難想 我們考慮裸暴力的寫法 從1點開始暴力dfs,暴力判斷當前點是否可以走 沒有走過或者道路摧毀 這樣你只能拿到低的可憐的暴力分 我們考慮上述寫法的問題在什麼地方,我們的dfs是這樣寫的 void dfs int k 問題就出在這個for迴圈上,如果全部尋...