傳送門
思路:
起初思路挺好,後來就比較奇怪的一道題目
玩法很像sdoi2016r2的硬幣遊戲,不過那個題目直接暴力sg就可以過,本題直接套規則只有30分;
稍微優化一下,不列舉k,直接每次xor一下後繼狀態的sg,可以得50分,複雜度o(
nlogn)
; 70分需要乙個比較好玩的結論: 如果⌊
ni⌋=
⌊nj⌋
,那麼sg
(i)=
sg(j
) 我們可以歸納證明一下: 當⌊
ni⌋=
1 時,顯然sg
(i)=
1 ,因為它只能令自身反色 當⌊
ni⌋>
1 時,sg
(i) 由⌊n
2i⌋,
⌊n3i
⌋ ..的sg值決定,又⌊n
ij⌋=
⌊⌊ni
⌋j⌋ ,所以⌊n
i⌋相同的位置後繼狀態相同,sg值也就相同了
然後就可以分塊求了,⌊n
i⌋的取值最多有2n
√ 種,轉移時考慮落在當前區間內的後繼點奇偶就可以了,複雜度o(
n) o
(n) ,還有什麼玄學/hash,表示不是很懂,不過裡面所說的合併sg給了我啟發,因為有很多⌊n
i⌋不相等的塊sg值相同,這個優化比較奇怪但確實很好用,在n=
109 s
g 函式都不大
**:
#include
#include
#include
using namespace std;
int n,m,q,cnt;
intpos[64005],f[64005];
struct nodeda[64005];
bool vis[1000];
void dp()
for (int j=1;;++j)
if (!vis[j])
for (int j=0;j<=mx;++j) vis[j]=0;
}}main()
}
bzoj 4600 硬幣遊戲 博弈論
反硬幣操作與c無關,只與2和3的指數有關。設sg i j 為2和3的指數分別為i和j時,且前面的硬幣都不可翻時的sg值。然後就可以列舉p,q,對於每乙個p,q,它的sg值為 sg i k q j 的異或和以及sg i j k q 的異或和,求mex。include include include d...
魔法遊戲 博弈論
題目大意 給一顆樹,每個位置有乙個權值,每次乙個人可以選擇森林中的某棵樹的根節點,設其權值為a aa,那麼這個人可以選擇乙個k 2,a 1 k in 2,a 1 k 2,a 1 然後讓a aa變成 ak left lfloor frac ak right rfloor ka 如果乙個點權值變為0那麼...
博弈論 Nim遊戲
這種遊戲稱為nim博弈,遊戲過程中面臨的狀態成為局面。n im nimni m博弈不存在平局,只有先手必勝和先手必敗兩種情況。定理nim 博弈先手 必勝,當 且僅當a 1xora2 xor xoran 0nim博弈先手必勝,當且僅當 a 1 texta 2 text cdots text a n n...