這一類是最簡單的入門級別啦,這些博弈問題的大前提來自優秀的學姐
求sg函式通常用dp||記憶化搜尋
poj2975 nim
這個題的題目描述就是我們跟蹤**會看到的過程
求nim遊戲獲勝的方案,其實就是求第一步可以從哪些堆裡拿。可以發現sg
i (第i堆石子)假如有k個,ta的後繼狀態可以轉移到0~k-1,那麼我們根據sg函式的定義可以知道sg[i]=a[i]
這裡再提一點就是k^a[i]表示總的sg值去掉這一堆石子的sg值,我們為了讓總的sg值為0,就要讓這一堆也就是第i堆石子的sg值為k^a[i],要想讓k^a[i]在取值範圍內,【根據sg函式的求法mex】,只有當(k^a[i]) < a[i]時,k^a[i]是sg
i 的後繼狀態,在ta的取值範圍內
剩下的下方普及向見咯!
#include
using
namespace
std;
int n,a[1005];
int main()
}
poj2960 s-nim
似乎是ta怎麼說你怎麼做求一波sg函式就完結了?要時刻把握sg函式的性質式,這個題目描述寫的特別好
#include
#include
#include
using
namespace
std;
int rule[105],a[105],n,sg[10005],m;bool ext[10005];
void get_sg()
}}int main()
printf("\n");
}}
poj2425 a chess game
要用記憶化搜尋求sg函式,注意sg函式是乙個數字!乙個狀態的sg取決於ta的後繼,後繼所有sg的mex
#include
#include
using
namespace
std;
int tot,nxt[499500],point[1005],v[499500],sg[1005];
void addline(int x,int y)
int get_sg(int x)
for (int i=0;;i++)
if (!ext[i])
return sg[x];
}int main()
while (scanf("%d",&m)&&m)
if (!k) printf("lose\n");else
printf("win\n");}}
}
Python 函式是第一類物件
在很多資料中,經常會看到這樣一句話 python 中的函式是第一類物件 這裡所說的第一類物件,其實是指函式作為乙個物件,與其他物件具有相同的地位。關於這一點,guido 曾提過 first class everything 他對 python 的乙個發展目標就是所有的物件都是第一類物件。也就是說,所...
Python 函式的第一類物件 使用
函式的第一類物件及使用 第一類物件 特殊點 可以當做值被賦值給變數 def func print 1 print func a func a 2.可以當做元素存放在容器中 def func print 1 lst func,func,func for i in lst i 3.函式名可以當做函式的引...
在python中函式是第一類物件
python中,所有的元素都是物件,其中第一類物件的通用特性 可作為值傳遞,賦值給另乙個物件 可以作為元素新增到集合物件中 可以作為引數傳遞給其他函式 可以作為函式的返回值 1,賦值給變數 def f1 str return len str temp f1 print temp hello 2,新增...