日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

sg函数入门理解

發(fā)布時(shí)間:2023/12/10 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sg函数入门理解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

首先理解sg函數(shù)必須先理解mex函數(shù)

mex是求除它集合內(nèi)的最小大于等于0的整數(shù),例:mex{1,2}=0;mex{2}=0;mex{0,1,2}=3;mex{0,5}=1。

而sg函數(shù)是啥呢?

對(duì)于任意狀態(tài) x , 定義 sg(x) = mex(f),其中f 是 x 后繼狀態(tài)的sg函數(shù)值的集合(就是上述mex中的數(shù)值)。最后返回值(也就是sg(x))為0為必?cái)↑c(diǎn),不為零必勝點(diǎn)。

看不懂,咱直接來(lái)個(gè)例子:

例如:取石子問(wèn)題,有1堆n個(gè)的石子,每次只能取{1,3,4}個(gè)石子,先取完石子者勝利,那么各個(gè)數(shù)的SG值為多少?

sg[0]=0,f[]={1,3,4},

?

x=1時(shí),可以取走1-f{1}個(gè)石子,剩余{0}個(gè),mex{sg[0]}={0},故sg[1]=1;

x=2時(shí),可以取走2-f{1}個(gè)石子,剩余{1}個(gè),mex{sg[1]}={1},故sg[2]=0;

x=3時(shí),可以取走3-f{1,3}個(gè)石子,剩余{2,0}個(gè),mex{sg[2],sg[0]}={0,0},故sg[3]=1;

x=4時(shí),可以取走4-f{1,3,4}個(gè)石子,剩余{3,1,0}個(gè),mex{sg[3],sg[1],sg[0]}={1,1,0},故sg[4]=2;

x=5時(shí),可以取走5-f{1,3,4}個(gè)石子,剩余{4,2,1}個(gè),mex{sg[4],sg[2],sg[1]}={2,0,1},故sg[5]=3;

以此類(lèi)推.....

? ?x ? ? ? ? 0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8....

sg[x] ? ? ?0 ?1 ?0 ?1 ?2 ?3 ?2 ?0 ?1...


計(jì)算從1-n范圍內(nèi)的SG值。

f(存儲(chǔ)可以走的步數(shù),f[0]表示可以有多少種走法)

這下就ojbk了吧

f[]需要從小到大排序

1.可選步數(shù)為1~m的連續(xù)整數(shù),直接取模即可,SG(x) = x % (m+1);

2.可選步數(shù)為任意步,SG(x)?= x;

3.可選步數(shù)為一系列不連續(xù)的數(shù),用GetSG()計(jì)算

再附個(gè)模板吧

1 //f[]:可以取走的石子個(gè)數(shù) 2 //sg[]:0~n的SG函數(shù)值 3 int f[maxn],sg[maxn],mex[maxn]; 4 void getSG(int n){ 5 int i,j; 6 memset(sg,0,sizeof(sg)); 7 for(i=1;i<=n;i++){ 8 memset(mex,0,sizeof(mex)); 9 for(j=1;f[j]<=i&&f[j]<=m;j++) //注意加f[i]的限定條件,此處為f[j]<=m 10 mex[sg[i-f[j]]]=1; 11 for(j=0;j<=n;j++){ //求mex中未出現(xiàn)的最小的非負(fù)整數(shù) 12 if(mex[j]==0){ 13 sg[i]=j; 14 break; 15 } 16 } 17 //cout<<i<<" "<<sg[i]<<endl; 18 } 19 }

?

轉(zhuǎn)載于:https://www.cnblogs.com/warmingtxdy/p/11320455.html

總結(jié)

以上是生活随笔為你收集整理的sg函数入门理解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。