• hdu-1536 S-Nim SG函数


    http://acm.hdu.edu.cn/showproblem.php?pid=1536

    给出能够取的方法序列,然后求基本石子堆问题。

    只要用S序列去做转移即可。

    注意has初始化的一些技巧

    #include <iostream>
    #include <vector>
    #include <set>
    #include <cstdlib>
    #define LL long long
    using namespace std;
    const int N=10005,NM=105;
    int sg[N];
    bool has[NM];
    vector<int> mov;
    
    void make_sg()
    {
        fill(sg,sg+N,0);
        sg[0]=0;
        for(int i=1;i<N;i++)
        {
            fill(has,has+NM,0);//这里初始化只需要初始化S的数目即可,因为如果sg函数要达到k,必然1~k-1的数都被填充才有可能
            for(int j=0;j<mov.size();j++)
            {
                if(i-mov[j]>=0)
                {
                    has[sg[i-mov[j]]]=1;
                }
            }
            for(int j=0;j<N;j++)
            {
                if(has[j]==0)
                {
                    sg[i]=j;
                    break;
                }
            }
        }
    }
    int main()
    {
        cin.sync_with_stdio(false);
        int k;
        while(cin>>k)
        {
            if(k==0)break;
            mov.clear();
            for(int i=0;i<k;i++)
            {
                int temp;
                cin>>temp;
                mov.push_back(temp);
            }
            make_sg();
            int m;
            cin>>m;
            while(m--)
            {
                int l;
                cin>>l;
                int v=0;
                for(int i=0;i<l;i++)
                {
                    int temp;
                    cin>>temp;
                    v^=sg[temp];
                }
                if(v==0)cout<<'L';
                else cout<<'W';
            }
            cout<<endl;
        }
        return 0;
    }
  • 相关阅读:
    添加yum源
    tar命令
    tomcat压力测试、优化
    vi命令
    Linux简单命令
    Linux简单命令
    vi命令
    tomcat压力测试、优化
    tar命令
    动态加载 CSS 文件
  • 原文地址:https://www.cnblogs.com/LukeStepByStep/p/9074024.html
Copyright © 2020-2023  润新知