HDU 1536 SG函数

简介:

这题也是一道sg函数的模板题,没有任何变形,明确了允许移动的数目范围后可以用SG函数直接解决,记住SG要将S数组中的数从小到大排序。

#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int k,num[120],f[10002];
int mex1(int p)
{
    int i,t;
    bool g[101]= {0};
    for(i=0; i<k; i++)
    {
        t=p-num[i];
        if(t<0)
            break;
        if(f[t]==-1)
            f[t]=mex1(t);
        g[f[t]]=1;
    }
    for(i=0;; i++)
        if(!g[i])
            return i;
}
int main()
{
    while(~scanf("%d",&k),k)
    {
        memset(f,-1,sizeof(f));
        f[0]=0;
        for(int i=0; i<k; i++)
            scanf("%d",&num[i]);
        sort(num,num+k);
        int n,m,s;
        for(int i=1; i<=10000; i++)
            f[i]=mex1(i);
        scanf("%d",&n);
        while(n--)
        {
            scanf("%d",&m);
            s=0;
            int x;
            for(int i=0; i<m; i++)
                scanf("%d",&x),s^=f[x];
            if(s)
                printf("W");
            else
                printf("L");
        }
        printf("\n");
    }
    return 0;
}


目录
相关文章
|
9月前
HDU-2089-不要62
HDU-2089-不要62
49 0
|
9月前
|
Java
HDU-4552-怪盗基德的挑战书
HDU-4552-怪盗基德的挑战书
61 0
畅通工程 HDU - 1232
畅通工程 HDU - 1232
89 0
HDU 2669 Romantic
题意:找出最小的非负整数X,使之满足式子X*a + Y*b = 1。
118 0
|
算法 Java 文件存储
HDU&#160;1166
Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营 地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。
1092 0