码迷,mamicode.com
首页 > 其他好文 > 详细

BZOJ 1874 取石子游戏 (NIM游戏)

时间:2014-07-18 21:09:31      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:style   for   re   c   amp   size   

题解:简单的NIM游戏,直接计算SG函数,至于找先手策略则按字典序异或掉,去除石子后再异或判断,若可行则直接输出。

#include  
const int N=1005;
int SG[N],b[N],hash[N],a[N],sum,tmp,i,j,n,m;  
void FSG(int s){  
    SG[0]=0;  
    for(int i=1;i<=s;i++){  
        for(int j=1;b[j]<=i&&j<=m;j++)hash[SG[i-b[j]]]=i;  
        for(int j=0;j<=s;j++)if(hash[j]!=i){SG[i]=j;break;}  
    }  
}  
int main(){  
    scanf("%d",&n); for(i=1;i<=n;i++)scanf("%d",&a[i]);  
    scanf("%d",&m); for(i=1;i<=m;i++)scanf("%d",&b[i]);  
    FSG(N);  
    for(i=1;i<=n;i++)sum^=SG[a[i]];  
    if(!sum){printf("NO");return 0;}  
    for(i=1;i<=n;i++){  
        tmp=sum^SG[a[i]];  
        for(j=1;b[j]<=a[i]&&j<=m;j++)  
        if(!(tmp^SG[a[i]-b[j]])){  
            printf("YES\n%d %d",i,b[j]);  
            return 0;  
        }  
    }  
}  

BZOJ 1874 取石子游戏 (NIM游戏),布布扣,bubuko.com

BZOJ 1874 取石子游戏 (NIM游戏)

标签:style   for   re   c   amp   size   

原文地址:http://www.cnblogs.com/forever97/p/bzoj1874.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!