sg函式 子狀態的討論

2022-03-05 19:16:16 字數 866 閱讀 8817

具體思路:首先,這是乙個公平的比賽,並且是兩個人參與,兩個人都足夠聰明,並且可以通過有限步結束比賽,所以可以通過sg函式解決,注意這個題的不同,假設當前的某一堆堆數是5,如果分成每堆為2,他的子狀態是2 2 1,和之前做過的子狀態不同,之前做的題拿掉的就相當於扔掉了,而這個題並沒有。

1 #include2 #include

3 #include4 #include5 #include6 #include7 #include8 #include9 #include10 #include11

using

namespace

std;

12 # define ll long

long

13 # define maxn 2000+100

14 # define inf 0x3f3f3f3f

15int

ans[maxn];

16int

vis[maxn];

17int

main()

1829

for(int j=0; j<=2000; j++)

3036}37

}38intn;

39int

temp;

40int t=0

;41 scanf("

%d",&n);

42for(int i=1; i<=n; i++)

4347

if(t)printf("

first\n");

48else printf("

second\n");

49return0;

50}51

組合遊戲中的SG函式

給定乙個有向無環圖和乙個起始頂點上的一枚棋子,兩名選手交替的將這枚棋子沿有向邊進行移動,無法移 動者判負。事實上,這個遊戲可以認為是所有impartial combinatorial games的抽象模型。也就是說,任何乙個icg都可以通過把每個局面看成乙個頂點,對每個局面和它的子局面連一條有向邊來...

我對SG函式的理解

i 的sg函式g i 定義如下 如果該點沒有出邊,g i 0 否則定義乙個mex minimal excludant 操作,這是對乙個集合進行的操作,返回值為集合中所不包含的最小的非負整數,那麼g i m ex。顯然對於乙個有向無環圖,我們都能在o 狀態總數 每個點 的後繼狀 態數 時間內求出所有點...

博弈論 SG函式入門 一維陣列多分支狀態

摘自piaocoder的部落格 首先定義mex minimal excludant 運算,這是施加於乙個集合的運算,表示最小的不屬於這個集合的非負整數。例如 mex 3 mex 0 mex 0。對於乙個給定的有向無環圖,定義關於圖的每個頂點的sprague grundy函式g如下 g x mex,這...