博弈 遊戲(SG 函式)

2021-10-24 11:28:44 字數 977 閱讀 7388

題目鏈結

小 n 和小 o 在玩遊戲。他們面前放了 n 堆石子,第 i 堆石子一開始有 ci 顆石頭。他們輪流從某堆石子中取石子,不能不取。最後無法操作的人就輸了這個遊戲。但他們覺得這樣玩太無聊了,更新了一下規則。具體是這樣的:對於一堆有恰好 m 顆石子的石頭堆,假如乙個人要從這堆石子中取石子,設他要取石子數為 d,那麼 d 必須是 m 的約數。最後還是無法操作者輸。

現在小 n 先手。他想知道他第一步有多少種不同的必勝策略。乙個策略指的是,從哪堆石子中,取走多少顆石子。只要取的那一堆不同,或取的數目不同,都算不同的策略。

第一行乙個整數 n。

接下來一行 n 個整數,分別代表每堆石子的石子數目。

資料保證輸入的所有數字都不超過105,均大於等於 1,且為整數。

一行乙個整數代表小 n 第一步必勝策略的數量。

輸入10

47 18 9 36 10 1 13 19 29 1

輸出

#include

using

namespace std;

const

int maxn=

1e5+5;

int s[maxn]

,sg[maxn]

,a[maxn]

,n,cnt=0;

vector<

int> f[maxn]

;void

getsg()

for(

int t=0;

;t++)}

}return;}

intmain()

}}}getsg()

; cin>>n;

int sum=0;

for(

int i=

1;i<=n;i++

)int ans=0;

for(

int i=

1;i<=n;i++)}

} cout

}

博弈sg函式

sg函式 個人認為還是用於三種方法都無法解決的情況,如按特殊數字取石子 我們把整個博弈過程抽象為有向無環圖 1.幾項準備工作 mex求最小非負整數mex 0,mex 3,mex 0 sg x mex 就是石頭變少的繼 這樣sg就滿足幾個性質 1.sg x 0時,它的後繼都不為零 2.sg x 0時,...

博弈SG函式

題意 乙個棋盤有n行,每行20格仔,都有一些棋子,兩個人輪流進行這個操作 選擇某一行乙個棋子移動到該行右邊第乙個空的格仔。不能進行的人輸。問先手是否能贏。分析 sg函式的應用,當時自己做的時候沒做出來qaq。終結點是這一行沒有棋子可以走,即0,然後逆推出其他結點的sg函式。每一行的狀態看成是乙個結點...

SG函式博弈函式

必勝點和必敗點的概念 p點 必敗點,換而言之,就是誰處於此位置,則在雙方操作正確的情況下必敗。n點 必勝點,處於此情況下,雙方操作均正確的情況下必勝。必勝點和必敗點的性質 1 所有終結點是 必敗點 p 我們以此為基本前提進行推理,換句話說,我們以此為假設 2 從任何必勝點n 操作,至少有一種方式可以...