S-Nim HDU

#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
using namespace std;
int main(){
    int n;//max
    int a[102],x[102],vis[102],sg[102];
    vector<char> c;
    while(~scanf("%d",&n),n){
        c.clear() ;
        for(int i=0;i<n;i++) scanf("%d",&a[i]);
        int L;//heap
        int ans=0;
        scanf("%d",&L);
        for(int i=0;i<L;i++){
            int h;//bead
            scanf("%d",&h);
            sg[0]=0;
            for(int j=0;j<h;j++){
                scanf("%d",&x[i]);
                memset(vis,0,sizeof(vis));
                for(int k=0;k<n;k++)
                    if(a[k]<=x[j])
                        vis[x[j]-a[k]]=1;
                for(int k=0;;k++)
                    if(vis[k]==0){
                        sg[j]=k;
                        break;
                    }
                ans^=sg[j];
            }
            if(ans) c.push_back('W');
            else c.push_back('L');      
        }
        for(int i=0;i<c.size() ;i++)
            printf("%c",c[i]);
        printf("
");
    }
}
View Code
原文地址:https://www.cnblogs.com/astonc/p/10009793.html