雕刻时光

just do it……nothing impossible
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

取多堆石头的博弈——hdu1851

Posted on 2011-04-10 21:21  huhuuu  阅读(312)  评论(0编辑  收藏  举报
先找必败态
如:一堆石头有8个
NO:0 1 2 3 4 5 6 7 8
S :P N N N P N N N P
即s=a%(b+1)
if s==0 就为必败态
在用nim博弈是s^(a%(b+1))即可
View Code
#include<stdio.h>
int main()
{
int t;
scanf(
"%d",&t);
while(t--)
{
int n;
scanf(
"%d",&n);
int i,a,b,s;
for(i=1;i<=n;i++)
{
scanf(
"%d%d",&a,&b);
if(i==1)
s
=a%(b+1);
else
s
=s^(a%(b+1));
}
if(s==0)
printf(
"Yes\n");
else
printf(
"No\n");
}
}