// i<1<> j & 1)//判斷二進位制第j位是否存在
t *= p[j];
s ++ ;
}if (t != -1)
}890. 能被整除的數
給定n堆物品,第i堆物品有ai個。兩名玩家輪流行動,每次可以任選一堆,取走任意多個物品,可把一堆取光,但不能不取。取走最後一件物品者獲勝。兩人都採取最優策略,問先手是否必勝。
我們把這種遊戲稱為nim博弈。把遊戲過程中面臨的狀態稱為局面。整局遊戲第乙個行動的稱為先手,第二個行動的稱為後手。若在某一局面下無論採取何種行動,都會輸掉遊戲,則稱該局面必敗。
所謂採取最優策略是指,若在某一局面下存在某種行動,使得行動後對面面臨必敗局面,則優先採取該行動。同時,這樣的局面被稱為必勝。我們討論的博弈問題一般都只考慮理想情況,即兩人均無失誤,都採取最優策略行動時遊戲的結果。
nim博弈不存在平局,只有先手必勝和先手必敗兩種情況。
先手必勝狀態:先手操作完,可以走到某乙個必敗狀態
先手必敗狀態:先手操作完,走不到任何乙個必敗狀態
先手必敗狀態:a1 ^ a2 ^ a3 ^ ... ^an = 0
先手必勝狀態:a1 ^ a2 ^ a3 ^ ... ^an ≠ 0
定理: nim博弈先手必勝,當且僅當 a1 ^ a2 ^ … ^ an != 0
891. nim遊戲
892. 台階-nim遊戲
若乙個遊戲滿足:
由兩名玩家交替行動;
在遊戲程序的任意時刻,可以執行的合法行動與輪到哪名玩家無關;
不能行動的玩家判負;
則稱該遊戲為乙個公平組合遊戲。
nim博弈屬於公平組合遊戲,但城建的棋類遊戲,比如圍棋,就不是公平組合遊戲。因為圍棋交戰雙方分別只能落黑子和白子,勝負判定也比較複雜,不滿足條件2和條件3。
給定乙個有向無環圖,圖中有乙個唯一的起點,在起點上放有一枚棋子。兩名玩家交替地把這枚棋子沿有向邊進行移動,每次可以移動一步,無法移動者判負。該遊戲被稱為有向圖遊戲。
任何乙個公平組合遊戲都可以轉化為有向圖遊戲。具體方法是,把每個局面看成圖中的乙個節點,並且從每個局面向沿著合法行動能夠到達的下乙個局面連有向邊。
設s表示乙個非負整數集合。定義mex(s)為求出不屬於集合s的最小非負整數的運算,即:
mex(s) = min, x屬於自然數,且x不屬於s
在有向圖遊戲中,對於每個節點x,設從x出發共有k條有向邊,分別到達節點y1, y2, …, yk,定義sg(x)為x的後繼節點y1, y2, …, yk 的sg函式值構成的集合再執行mex(s)運算的結果,即:
sg(x) = mex()
特別地,整個有向圖遊戲g的sg函式值被定義為有向圖遊戲起點s的sg函式值,即sg(g) = sg(s)。
設g1, g2, …, gm 是m個有向圖遊戲。定義有向圖遊戲g,它的行動規則是任選某個有向圖遊戲gi,並在gi上行動一步。g被稱為有向圖遊戲g1, g2, …, gm的和。
有向圖遊戲的和的sg函式值等於它包含的各個子遊戲sg函式值的異或和,即:
sg(g) = sg(g1) ^ sg(g2) ^ … ^ sg(gm)
有向圖遊戲的某個局面必勝,當且僅當該局面對應節點的sg函式值大於0。
有向圖遊戲的某個局面必敗,當且僅當該局面對應節點的sg函式值等於0。
893. 集合-nim遊戲
894. 拆分-nim遊戲
Head First Python第四章知識點
1.strip 方法可以從字串去除不想要的空白符 宣告 s為字串,rm為要刪除的字串行 s.strip rm 刪除s字串中開頭 結尾處,位於 rm刪除序列的字元 s.lstrip rm 刪除s字串中開頭處,位於 rm刪除序列的字元 s.rstrip rm 刪除s字串中結尾處,位於 rm刪除序列的字元...
第四章 型別基礎
這章不好理解,我是連抄帶找的。一 system.object 所有型別的基類,也就是所有型別從它派生。公開了幾個方法 equals 判定兩個物件是否具有相同的值 相等性和同一性後續討論 gethashcode tostring 預設返回型別的完整名稱,但是經常會重寫返回表示物件狀態的 string ...
第四章 型別基礎
4.1 所有型別都從system.object派生 執行時 要求每個型別最終都從system.object型別派生。system.object 公共例項方法 equals 如果兩個物件具有相同的值,就返回true。gethashcode 返回物件的值得雜湊碼。如果某個型別的物件要在雜湊表集合中作為建...