版权声明:本文为博主原创文章,可随意转载 https://blog.csdn.net/weixin_38686780/article/details/83039056
不平等博弈
ACM博弈 - I 平等博弈 SG函数的证明
贪心博弈
例1. Alice’s Game HDU - 3544
题意:
给n块巧克力,第i块是
ni∗mi,Alice只能垂直切,切成
A∗m和B∗m,并且
A+B=n,Bob只能横切,只能切成
A∗n和B∗n,并且
A+B=m
分析:
语言表达能力有限
我们采取
HP(n,m)表示
n∗m的矩形对Alice的可切割次数的贡献,负数代表对Bob的贡献,如果所有
∑HPi>0 ,Alice必赢,
∑HPi<=0,Bob(必赢)
对于HP(i,j) 的计算我们有如下法则
1.
n∗1 的矩形贡献为n-1
2.
1∗m 的矩形贡献为-(m-1)
3.
2∗2,3∗3,4∗4..n∗n的矩形对HP的贡献为零,因为如果你首先下手切,都会给对手更多的机会,如果你能赢,你不会切这个,如果你输,那么切了这个你还会输。
4. 对于
2∗3,3∗2,5∗4...,的矩阵来说与3的状况相同,对答案的贡献都是0,首先下手都会给对手更多的机会
5. 贡献为零的有什么规律呢,我们发现原来是它们是
2k<=n<2k+1&&
2k<=m<2k+1
6.
n∗2 的矩形对于Alice来说有贡献,我们每一次可以选择都切成
2∗2,3∗2的矩形,这样不会给对手机会,自己还可以增加一次切的机会,Bob也不会傻到切这个矩形,这样会给Alice更多机会,所以
n∗2的矩形,Alice 可以切
n/2−1 次
这个时候可以总结一下规律:
- 我们每一次切,都会切成
HP(i,m)=0,HP(n−i,m)>=0的 两块,
HP(n,m)=HP(n−i,m)+1,递归下去
HP(n−i−j,m)=HP(n−i−j,m)+1,直到
HP(n−i−j....,m)=0,这怎么计算呢
- 我们知道
HP(n,m)=0 当且仅当
2k<=n<2k+1&&
2k<=m<2k+1
- 那么就有
HP(n,m)=n/(2k)−1
代码看具体博客
HDU3544
2.