博弈好题 poi2004 gra

 

Poi2004 gra{经典}

题意:给定一个1*m的棋盘,现在上面有n个棋子,每次可以把一个棋子移到编号比它的编号大的第一个格子里面,谁把一个棋子移到了m中就获胜。

M<=10^9,n<=10^6

 

相当经典的一道题啊。

S1:a[n]=m-1a[n-1]=m-2,……则只能移动他们,Ans=这样连续的个数。若此时ans>0,则输出。

S2:谁都不想把棋子移动到m-1去,因此若谁移动后所有棋子都在[m-n-1..m-2],则胜,而且最后的状态必然为这个。把m-1做为地板,把两个空格之间作为楼梯,

连续棋子数B作为石子数,放在他们右边第一个空格上,则成为经典问题。

 

staircase nim 经典组合游戏

    游戏开始时有许多硬币任意分布在楼梯上,共n阶楼梯从地面由下向上编号为0n。游戏者在每次操作时可以将楼梯j(1<=j<=n)上的任意多但至少一个硬币移动到楼梯j-1上。游戏者轮流操作,将最后一枚硬币移至地上的人获胜。

 

   

分析:

这个问题与nim游戏的区别在于移走的硬币不是被扔掉而是被放进了另一堆硬币之中,考虑能否将这一部分楼梯排除考虑范围。奇数号楼梯只能将硬币扔到偶数号楼梯之中,同样偶数号楼梯上的硬币也只会被扔上奇数号楼梯。只考虑奇数号楼梯nim,若偶数楼梯只作容器,那么游戏变为nim。当偶数号楼梯上的硬币可以将硬币移出时,我们是不是仍然可以用nim的方法判断必败状态?

将奇数台阶的硬币数nim和为0称作条件A,结束状态满足条件A;任何满足条件A的状态都到达不满足条件A的状态;任何不满足条件A的状态都可以到达满足条件A的状态(nim)。因此一个状态为必败状态当且仅当它满足条件A

 

 

 

设该游戏Sg函数为奇数格棋子数的XorS

优化:对于转化后连续的奇数个0等价于10,连续偶数个0等价于20

可行策略:

奇数楼梯iS xor b[i]<b[i]

偶数楼梯ib[i-1]<S xor b[i-1]<=b[i-1]+b[i]

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值