首页 > 其他 > 详细

一本通1669S-Nim

时间:2019-03-18 21:13:49      阅读:175      评论:0      收藏:0      [点我收藏+]

1669:S-Nim

技术分享图片

【输入样例】

2 2 5
3
2 5 12
3 2 4 7
4 2 3 7 12
5 1 2 3 4 5
3
2 5 12
3 2 4 7
4 2 3 7 12
0

【输出样例】

LWW
WWL

【提示】

数据范围与提示:

对于全部数据,0<n,m,k100,0<si,ai104 。

 

sol:模板,不解释

技术分享图片
#include <bits/stdc++.h>
using namespace std;
typedef int ll;
inline ll read()
{
    ll s=0;
    bool f=0;
    char ch= ;
    while(!isdigit(ch))
    {
        f|=(ch==-); ch=getchar();
    }
    while(isdigit(ch))
    {
        s=(s<<3)+(s<<1)+(ch^48); ch=getchar();
    }
    return (f)?(-s):(s);
}
#define R(x) x=read()
inline void write(ll x)
{
    if(x<0)
    {
        putchar(-); x=-x;
    }
    if(x<10)
    {
        putchar(x+0); return;
    }
    write(x/10);
    putchar((x%10)+0);
    return;
}
#define W(x) write(x),putchar(‘ ‘)
#define Wl(x) write(x),putchar(‘\n‘)
const int N=105,B=10005;
int k,S[N],m,n,a[N];
int SG[B],Mark[B];
int main()
{
    int i,j;
    while(true)
    {
        R(k);
        if(!k) break;
        for(i=1;i<=k;i++) R(S[i]);
        sort(S+1,S+k+1);
        SG[0]=0;
        for(i=1;i<=10000;i++)
        {
            for(j=1;S[j]<=i&&j<=k;j++)
            {
                Mark[SG[i-S[j]]]=i;
            }
            for(j=0;;j++) if(Mark[j]!=i)
            {
                SG[i]=j; break;
            }
        }
        R(m);
        while(m--)
        {
            R(n);
            int ans=0;
            for(i=1;i<=n;i++) ans^=SG[read()];
            if(ans) putchar(W);
            else putchar(L);
        }
        putchar(\n);
    }
    return 0;
}
/*
input
2 2 5
3
2 5 12
3 2 4 7
4 2 3 7 12
5 1 2 3 4 5
3
2 5 12
3 2 4 7
4 2 3 7 12
0
output
LWW
WWL
*/
View Code

 

一本通1669S-Nim

原文:https://www.cnblogs.com/gaojunonly1/p/10554827.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!