BestCoder#56 Clarke and puzzle
2015-09-22 21:17
381 查看
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5465
分析:由上一篇博客可之,xor为0则先手必输。所以只需一个二维树状数组。
代码:
分析:由上一篇博客可之,xor为0则先手必输。所以只需一个二维树状数组。
代码:
#include <cstdio> #include <algorithm> #include <cstring> using namespace std; const int Tmax=505; int n,m,q; long long int data[Tmax][Tmax],C[Tmax][Tmax]; int lowbit(int x) { return x&-x; } void add(int x,int y,long long int delta) { int i,j; for(i=x;i<=n;i+=lowbit(i)) for(j=y;j<=m;j+=lowbit(j)) C[i][j]^=delta; return; } long long int sum(int x,int y) { long long int res=0; int i,j; for(i=x;i>0;i-=lowbit(i)) for(j=y;j>0;j-=lowbit(j)) res^=C[i][j]; return res; } int main() { int T,i,j,x,y,x2,y2,opt; long long int z; scanf("%d",&T); while(T--) { memset(C,0,sizeof(C)); scanf("%d%d%d",&n,&m,&q); for(i=1;i<=n;i++) for(j=1;j<=m;j++) { scanf("%I64d",&data[i][j]); add(i,j,data[i][j]); } for(i=1;i<=q;i++) { scanf("%d",&opt); if(opt==2) { scanf("%d%d%I64d",&x,&y,&z); add(x,y,data[x][y]^z); data[x][y]=z; } else { scanf("%d%d%d%d",&x,&y,&x2,&y2); if((sum(x2,y2)^sum(x-1,y2)^sum(x2,y-1)^sum(x-1,y-1))==0) printf("No\n"); else printf("Yes\n"); } } } return 0; }
相关文章推荐
- hdu acm 2569
- 关于计算机领域中 Provisioning 词的准确含义
- sudo简介
- 20150922——第一个项目总结
- snort规则解析
- OpenGL投影矩阵与相机模型(Set Projection Matrix for Pinhole Camera Model)
- 广联达2016西安研发笔试题
- ViewPagerIndicator-master源码分析 3
- Pascal's Triangle II
- CRM-BaseDao的抽取
- maven 学习总结(三)——使用Maven构建项目
- poj Asteroids (二分匹配之匈牙利算法)
- (2.3.11)Java中HashMap遍历的两种方式
- 第四十四天 指南针、百度地图
- grials相关安装文件可以从我的网盘下载
- 嵌入式linux的tftp安装配置及tftp命令用法
- bzoj2751&CodeVS1853 容易题
- Java虚拟机2:Java内存区域及对象
- ExtJs4得知(五岁以下儿童)主要的Ext分类
- vSphere Client 启用“复制”和“粘贴”选项