博弈学习:
先看三个博弈,了解基本概论,记住公式。
明白必败点(P)和必胜点(N)的概论,我觉得用必败态和必胜态更合适一点。这里要注意理解一下。
然后是后继点和sg值,后继点(态)是从当前点(态)进过一步能够走到的状态。
sg值是定义为:大于等于0 且 不等于它所有后继点的sg 值的最小整数
sg值为0说明这是必败点,不为0说明这是必胜点。
一个很优雅的结论:(在NIM博弈中) 对多组数。sg(x)= sg(x1) ^ sg(x2) ^ …… ^ sg(xn)。
sg(x) 为0,为P,sg(x)不为0,为N。
杭电上的题目:
hdu 1517
从1开始,每次可以乘2或9,谁能先到给定的数,谁赢。
hdu 1525
两个数,大数减去小数的倍数,谁能先到0谁赢。
hdu 1729
n个包,每个包有体积si和初始放的石头ci,往里面放石头,放的个数小于ci的平方,看谁先没得放,判断先手是否能赢。
hdu 1730
两者之间的记录做sg。
hdu 1846
简单题,最基本的巴士博弈
hdu 1847
简单题,巴士博弈
hdu 1848
简单题,巴士博弈,经典的菲波那契数。
hdu 1849
NIM博弈
hdu 1850
看后面2176
hdu 1851
NIM博弈,sg为m%(l+1)。
hdu 1907
hdu 2147
hdu 2176
跟前面1850一样的题目。对每一堆而言,其他堆的异或值必须小于该堆得数,这样拿一些石子后才能是所有堆得异或值为0,达到必败点。
hdu 2509
hdu 2516
斐波那契数列是必败点,推出来的,为什么,不知道!!!