http://poj.org/problem?id=3533

变成三维的nim积。。前面hdu那个算二维nim积的题的函数都不用改,多nim积一次就过了。。。longlong似乎不必要但是还是加上了

代码

 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<iostream>
#include<map>
#include<ctime>
using namespace std;
long long n;
long long sg[][]={};
long long f(long long,long long);
long long g(long long x,long long y){
if(sg[x][y]!=-)return sg[x][y];
if(!x)return sg[x][y]=<<y;
if(!y)return sg[x][y]=<<x;
long long ans=,k=,t;
long long x1=x,y1=y;
while(x||y){
t=<<k;
if((x^y)&){
ans*=t;
}
x>>=;y>>=;k<<=;
}
k=;x=x1;y=y1;
while(x||y){
t=<<k;
if((x&y)&){
ans=f(ans,t/*);
}
x>>=;y>>=;k<<=;
}return sg[x1][y1]=ans;
}
long long f(long long x,long long y){
if(!x||!y)return ;
if(x==)return y;
if(y==)return x;
long long ans=;
for(long long i=x,a=;i;i>>=,a++){
if(!(i&))continue;
for(long long j=y,b=;j;j>>=,b++){
if(!(j&))continue;
ans^=g(a,b);
}
}return ans;
}
int main(){
memset(sg,-,sizeof(sg));
while(~scanf("%lld",&n)){
long long ans=,x,y,z;
for(long long i=;i<=n;i++){
scanf("%lld%lld%lld",&x,&y,&z);
ans^=f(z,f(x,y));
}
if(ans)printf("No\n");
else printf("Yes\n");
}
return ;
}

最新文章

  1. Eclipse+Tomcat+MAVEN+SVN项目完整环境搭建
  2. java map缓存
  3. zoj 3232 It&#39;s not Floyd Algorithm(强联通分量,缩点)
  4. sqlserver 2008表分区操作
  5. PHP编程----猴子选大王
  6. Win10安裝weblogic12C
  7. OpenCV与Qt的环境搭建及Demo
  8. 如何在asp.net mvc 中使用Autofac 控制反转(Ioc)
  9. 原生js实现 五子棋
  10. ftp和mysql数据库结合使用
  11. Zookeeper客户端介绍
  12. Robot Framework问题记录
  13. c++设计一个无法被继承的类
  14. C#:添加web service引用
  15. 关闭文件描述符-close
  16. 微信小程序------导航栏样式、tabBar导航栏
  17. Nginx笔记(一):安装
  18. Lambda演算(一)大道至简
  19. Java 保存对象到文件并恢复 ObjectOutputStream/ObjectInputStream
  20. kvm虚拟机扩展磁盘空间

热门文章

  1. 【BZOJ】1572: [Usaco2009 Open]工作安排Job
  2. 【BZOJ】2038: [2009国家集训队]小Z的袜子(hose)
  3. js父页面和子页面相互取值
  4. 【转】CentOS7 yum方式配置LAMP环境
  5. thinkphp博客项目纪录
  6. imperva agent 的重新注册
  7. python并发编程之Queue线程、进程、协程通信(五)
  8. python基础===15条变量&amp;方法命名的最佳实践
  9. ahttp
  10. POJ 2513 Colored Sticks(Tire+欧拉回(通)路判断)