• hdu_1536_S-Nim(DFS_SG博弈)


    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1536

    题意:首先输入K ,表示一个集合的大小 , 之后输入集合, 表示对于这对石子只能去这个集合中的元素的个数,之后输入 一个m, 表示接下来对于这个集合要进行m次询问, 之后m行 ,每行输入一个n ,表示有n个堆 , 每堆有n1个石子,  问这一行所表示的状态是赢还是输, 如果赢输入W否则L。

    题解:sg打表会超时,只有在线算sg了,就是DFS_SG

     1 #include<cstdio>
     2 #include<algorithm>
     3 #define F(i,a,b) for(int i=a;i<=b;i++)
     4 using namespace std;
     5     
     6 const int N=10011;
     7 int sg[N],f[111],m,nn,ans,tp;
     8 
     9 int dfs_SG(int x,int *s){
    10         if(sg[x]!=-1)return sg[x];     
    11         bool v[110];
    12         F(i,0,101)v[i]=0;
    13         F(i,1,s[0])if(x>=s[i])v[dfs_SG(x-s[i],f)]=1; 
    14         F(i,0,N)if(!v[i]){sg[x]=i;break;}
    15         return sg[x];  
    16 }
    17 
    18 int main(){
    19     while(~scanf("%d",f),f[0]){
    20         F(i,1,f[0])scanf("%d",f+i);
    21         sort(f+1,f+1+f[0]);
    22         F(i,1,N-1)sg[i]=-1;
    23         scanf("%d",&m);
    24         while(m--){
    25             scanf("%d",&nn),ans=0;
    26             while(nn--)scanf("%d",&tp),ans^=dfs_SG(tp,f);
    27             if(ans)printf("W");
    28             else printf("L");
    29         }
    30         puts("");
    31     }
    32     return 0;
    33 }
    View Code



  • 相关阅读:
    php编译错误:jpeglib.h not found.
    php编译错误:Please reinstall the libcurl distribution
    php编译错误:Cannot find OpenSSL's <evp.h>
    php shmop windows 信号量锁
    vsftpd配置
    putty ssh 证书登录及问题
    mysql被收购 用mariadb
    centos 7 php7 yum源
    3dmax 欢迎页卡住
    用python进行服务器的监控
  • 原文地址:https://www.cnblogs.com/bin-gege/p/5696121.html
Copyright © 2020-2023  润新知