一开始想成S-Nim了……后来发现不一样= =石子是一定得取的,但是这个铺条纹就像Crosses and Crosses一样,是可以铺到中间,左右留下空隙但是对手无处可放的……

  所以就是两道题的方法结合一下咯~

  

 1 /**************************************************************
 2     Problem: 2940
 3     User: Tunix
 4     Language: C++
 5     Result: Accepted
 6     Time:60 ms
 7     Memory:1276 kb
 8 ****************************************************************/
 9  
10 //BZOJ 2940
11 #include<cstdio>
12 #include<cstring>
13 #include<iostream>
14 #define F(i,j,n) for(int i=j;i<=n;++i)
15 int getint(){
16     int v=0,sign=1; char ch=getchar();
17     while(!isdigit(ch)) {if(ch=='-') sign=-1; ch=getchar();}
18     while(isdigit(ch))  {v=v*10+ch-'0'; ch=getchar();}
19     return v*sign;
20 }
21 const int N=1010,INF=~0u>>2;
22  
23 int a[4],SG[N];
24 bool mark[N];
25 int main(){
26     F(i,1,3) a[i]=getint();
27     int n=getint();
28     F(i,1,1000){
29         memset(mark,0,sizeof mark);
30         F(j,1,3)
31             for(int k=0;k<=i-a[j]-k;++k)
32                 mark[SG[k]^SG[i-a[j]-k]]=1;
33         F(j,0,i) if (!mark[j]) {SG[i]=j; break;}
34     }
35     F(i,1,n) {
36         printf("%d",SG[getint()] ? 1 : 2);
37         if (i!=n) printf("\n");
38     }
39     return 0;
40 }
View Code

相关文章:

  • 2021-12-13
  • 2021-08-07
  • 2021-07-22
  • 2021-08-11
  • 2022-03-04
  • 2021-07-27
  • 2021-09-23
  • 2022-02-14
猜你喜欢
  • 2022-03-08
  • 2021-08-05
  • 2021-11-10
  • 2021-08-24
  • 2021-08-05
  • 2021-06-28
  • 2021-07-14
相关资源
相似解决方案