【演算法】博弈論
【題解】這道題不是典型的sg函式題了。
不把它當成遊戲看待,那麼這道題是在說n個石子堆,每次可以加入若干個或進行nim遊戲。
我們當前先手,則考慮構造必敗態來獲勝。
當前已加入的nim遊戲sg=0,則必須考慮加入石子堆,若加入m堆構造出sg=0,對方有兩種選擇:
加入新的石子堆,則必須是sg=0。
進行nim遊戲,但是目前sg=0,先手必敗。
所以只要把n堆中異或和=0的最長子序列在第一次操作時移入即可先手必勝。
#include#includeview code#include
using
namespace
std;
int a[20
],n,tot;
bool dfs(int x,int
ans)
else
}int
main()
return0;
}
BZOJ 1299 LLH邀請賽 巧克力棒
如果沒有拿巧克力棒的操作的話 是乙個裸的nim遊戲 現在加入了這個操作 改變了異或的值 那麼我們只需要判斷先手的人是否可以從集合中取出乙個極大的異或值為0的子集即可 include include include include include include using namespace std...
bzoj1299 LLH邀請賽 巧克力棒 博弈
先從n根巧克力棒中取出m m 0 根,使得這m根巧克力棒的xor和為0 也就是把nim遊戲的必敗狀態留給對方 同時使得剩下的n m根巧克力棒無論怎麼取,xor和都不為0。實際上m就是巧克力棒的xor和為0的最長子序列 這麼一來,對手就面臨乙個必敗狀態的nim遊戲。如果他從n m根中取新的巧克力棒,實...
LLH邀請賽 參觀路線
很奇妙的一題,實際上如果你寫過類似的題目並不難想 我們考慮裸暴力的寫法 從1點開始暴力dfs,暴力判斷當前點是否可以走 沒有走過或者道路摧毀 這樣你只能拿到低的可憐的暴力分 我們考慮上述寫法的問題在什麼地方,我們的dfs是這樣寫的 void dfs int k 問題就出在這個for迴圈上,如果全部尋...