不平等博弈

ACM博弈 - I 平等博弈 SG函数的证明
有助于不平等博弈学习的资料

  1. 博客 https://blog.csdn.net/wozaipermanent/article/details/81559438
  2. 杜教主的ppt讲稿 sureal number;

贪心博弈

例1. Alice’s Game HDU - 3544

题意:

 给n块巧克力,第i块是 n i m i n_i*m_i nimi,Alice只能垂直切,切成 A m B m A*m和B*m AmBm,并且 A + B = n A+B=n A+B=n,Bob只能横切,只能切成 A n B n A*n和B*n AnBn,并且 A + B = m A+B=m A+B=m

分析:

语言表达能力有限

我们采取 H P ( n , m ) HP(n,m) HP(n,m)表示 n m n*m nm的矩形对Alice的可切割次数的贡献,负数代表对Bob的贡献,如果所有 H P i &gt; 0 \sum{HP_i}&gt; 0 HPi>0 ,Alice必赢, H P i &lt; = 0 \sum{HP_i} &lt;= 0 HPi<=0,Bob(必赢)
对于HP(i,j) 的计算我们有如下法则
1. n 1 n*1 n1 的矩形贡献为n-1
2. 1 m 1*m 1m 的矩形贡献为-(m-1)
3. 2 2 , 3 3 , 4 4.. n n 2*2,3*3,4*4..n*n 22,33,44..nn的矩形对HP的贡献为零,因为如果你首先下手切,都会给对手更多的机会,如果你能赢,你不会切这个,如果你输,那么切了这个你还会输。
4. 对于 2 3 , 3 2 , 5 4... , 2*3,3*2,5*4... , 23,32,54...,的矩阵来说与3的状况相同,对答案的贡献都是0,首先下手都会给对手更多的机会
5. 贡献为零的有什么规律呢,我们发现原来是它们是 2 k &lt; = n &lt; 2 k + 1 2^k &lt;= n &lt; 2^{k+1} 2k<=n<2k+1&& 2 k &lt; = m &lt; 2 k + 1 2^k &lt;= m &lt; 2^{k+1} 2k<=m<2k+1
6. n 2 n*2 n2 的矩形对于Alice来说有贡献,我们每一次可以选择都切成 2 2 , 3 2 2*2,3*2 22,32的矩形,这样不会给对手机会,自己还可以增加一次切的机会,Bob也不会傻到切这个矩形,这样会给Alice更多机会,所以 n 2 n*2 n2的矩形,Alice 可以切 n / 2 1 n/2-1 n/21
这个时候可以总结一下规律:

  1. 我们每一次切,都会切成 H P ( i , m ) = 0 , H P ( n i , m ) &gt; = 0 HP(i,m) = 0,HP(n-i,m) &gt;= 0 HP(i,m)=0,HP(ni,m)>=0的 两块, H P ( n , m ) = H P ( n i , m ) + 1 HP(n,m) = HP(n-i,m)+1 HP(n,m)=HP(ni,m)+1,递归下去 H P ( n i j , m ) = H P ( n i j , m ) + 1 HP(n-i-j,m) = HP(n-i-j,m)+1 HP(nij,m)=HP(nij,m)+1,直到 H P ( n i j . . . . , m ) = 0 HP(n-i-j....,m) = 0 HP(nij....,m)=0,这怎么计算呢
  2. 我们知道 H P ( n , m ) = 0 HP(n,m) = 0 HP(n,m)=0 当且仅当 2 k &lt; = n &lt; 2 k + 1 2^k &lt;= n &lt; 2^{k+1} 2k<=n<2k+1&& 2 k &lt; = m &lt; 2 k + 1 2^k &lt;= m &lt; 2^{k+1} 2k<=m<2k+1
  3. 那么就有 H P ( n , m ) = n / ( 2 k ) 1 HP(n,m) = n/(2^{k}) - 1 HP(n,m)=n/(2k)1
代码看具体博客

HDU3544

2.