博弈論一點點

2022-08-15 07:36:17 字數 3832 閱讀 9056

基本就是把這裡的題過了一遍

sg函式資料(入門必備)

感覺很不錯的文章

博弈論(一):nim遊戲

博弈論(二):sprague-grundy函式

尋找必敗態——一類博弈問題的快速解法

練手 hdu1846

#include

using

namespace

std;

int main()

return

0;}

hdu2147

#include

using

namespace

std;

int main()

return

0;}

hdu2188

#include

using

namespace

std;

int main()

return

0;}

hdu2148

pn似乎反過來了。。。。找規律

#include

using

namespace

std;

int main()else

}return

0;}

nim遊戲

對於乙個nim遊戲的局面(a1,a2,…,an),它是p-position當且僅當a1^a2^…^an=0,其中^表示異或(xor)運算。

先記個結論(坑以後再填)

#include

using

namespace

std;

int main()

if (!cnt)ans = !(n&1);

if (ans)puts("john");

else

puts("brother");

}return

0;}

#include

#include

using

namespace

std;

int main()

if (!cnt)ans = !!(n&1);//這個時候n都=0了,前面迴圈應該for個i,這裡能過是因為資料弱吧

if (ans)puts("yes");

else

puts("no");

}return

0;}

hdu1527

威佐夫博弈

#include

#include

#include

using

namespace

std;

const

double phi=(1+sqrt(5))/2.0;

int main()

return

0;}

繼續練手

hdu1847

#include

using

namespace

std;

int main()

return

0;}

hdu1849

#include

using

namespace

std;

int main()

puts(ans?"rabbit win!":"grass win!");

}return

0;}

hdu1850

#include

using

namespace

std;

const

int n=111;

int a[n];

int main()

if (!nim)puts("0");

else

printf("%d\n",cnt);}}

return

0;}

sg函式模板

理論詳細解釋

再次上演悲劇,除錯n弄成了15,然後rte,然後設成了10w(題目上數字看錯了),然後tle,然後,,,,好氣啊

第一次多校訓練的題,,就是這題引出了這一整篇文fei章hua

學(zhuang)術(bi)一點的說法是,狀態壓縮+sg

先說狀態壓縮

簡單點的話,一行一行處理,第i個格仔有棋子就 +1<< i(2的i次方) ,最後得到乙個數字表示這一行的一種狀態,個人習慣從1開始數,,,於是1<<0=1遍沒有意義,導致我的表只有偶數(一半是空的,為了個人的強迫症強行多開了一倍空間,不過我喜歡,嘻嘻),所以所有狀態的最小值是0(沒有棋子),最大是(1<<21-2)(所有格仔都有棋子,等比數列求個和就行)。

sg嘛,對棋盤的每個狀態求sg值,注意所有棋子集中在右邊的時候是沒法走的(sg=0),所以從大到小求,,,狀態變化,我一開始寫的加減號,然後看有人用的位運算,以為自己錯了,改成位運算的樣子,a了之後又感覺自己想法不錯,改回加減號,果然還是a了,,當然,感覺用位運算更易於理(zhuang)解(bi)一點,這裡貼的**就是位運算版本的辣(mdzz,乙個符號講這麼多廢話)

#include

#include

using

namespace

std;

const

int n=(1

<<21)+7;

int sg[n];

int c[23],c;//the position of chesses

int next(int x)

return0;}

void getsg()

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

if(!vis[j])

}}int main()

ans ^= sg[che];

}if (ans)puts("yes");

else

puts("no");

}return

0;}

一點點感想

寫在這喧囂與寂寞的世界 今天我與chen在風初停的早上跑去借書,借了安妮的 清醒記 兩本三毛的書和一本yilan的旅行與味蕾的書。從圖書館出來,風似乎有些冷,想到又要到那陰冷的梅花館坐在又涼又硬的椅子上上一節乏味的數學課我們便都不約而同的想到了逃課。帶著心裡的負罪感我們躲進八食取暖。無意中我們嘗到了...

一點點感悟

這兩天一直在努力的調整狀態,考慮了很多,也想通了很多,因為看開了,所以狀態也好了很多。明白了,一件事情的兩面性,壞的一面會使自己痛苦不堪,好的一面會使自己心情愉快。看了一篇文章,感觸很大,裡面有很多啟發自己的語句。二十幾歲的人,除了愛情之外,還需要有一項能使自己生活的本領 要把自己的感觸 心情和生活...

一點點想法

最近公司要做個專案,用到進銷存系統,考查了好幾個,都不是很滿意 要麼功能上不行,要麼 上不行 突然在想,如果能用php做乙個,將是個不錯的選擇,因為進銷存大部分都是內部人使用,併發量要求並不是很高,主要是資料準確性和安全性,我想這兩方面重不在語言,另外乙個麻煩的地方是報表這塊,可以用其它語言來單獨處...