您的位置:首页 > 其它

POJ 3537 Crosses and Crosses [Multi-SG]

2017-03-16 23:35 323 查看
传送门

我也不知道为什么枚举vis必须加上一个边界才能A

以后还是都加上吧

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
typedef long long ll;
const int N=2005;
inline int read(){
char c=getchar();int x=0,f=1;
while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
return x*f;
}

int n,m,f
;
bool vis
;
#define me(x) ( x<0 ? 0 : f[x] )
int main(){
n=read();
for(int i=1;i<=n;i++){
memset(vis,0,sizeof(vis));
for(int j=1;j<=i;j++) vis[ me(j-3)^me(i-j-2) ]=1;
for(int j=0;j<=i;j++) if(!vis[j]) {f[i]=j; break;}
//printf("f %d %d\n",i,f[i]);
}
puts(f
? "1" : "2");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: