HDU 1536 (博弈SG)

直接套模板的水題.....

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
int k,fibo[100],f[10001];//k爲取數規則的個數
int mex1(int p)
{
    int i,t;
    bool g[101]= {0};
    for(i=0; i<k; i++)         //注意  i從0開始,別動i
    {
        t=p-fibo[i];
        if(t<0)
            break;
        if (f[t]==-1)
            f[t]=mex1(t);
        g[f[t]]=1;
    }
    for(i=0;; i++)               //好像必須從0開始啊
    {
        if (!g[i])
            return i;
    }
}
int main()
{
    int m,h,n;
    while(scanf("%d",&k)!=-1&&k)
    {
        for(int i=0; i<k; i++)
            scanf("%d",&fibo[i]);
        sort(fibo,fibo+k);
        memset(f,-1,sizeof(f));
        f[0]=0;
        for(int i=1; i<=10000; i++)
            f[i]=mex1(i);
        scanf("%d",&m);
        while(m--)
        {
            int ans=0;
            scanf("%d",&h);
            while(h--)
            {
                scanf("%d",&n);
                ans^=f[n];
            }
            printf(ans?"W":"L");
        }
        printf("\n");
    }

    return 0;
}


發佈了113 篇原創文章 · 獲贊 2 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章