题意:基于矩阵的NIM游戏,求异或和。

思路:在x1,y1 到 x2, y2的异或和 =  A[ x2 ][ y2 ] ^ A[x1-1][ y2 ] ^ A[ x2 ][y1 - 1] ^ A[ x1-1 ][ y1 - 1 ]

先普通来了两次,结果都超时。  上个二维树状数组AC

#include <cstdio>
#include <cstring>
#define MAXN 100010
using namespace std;int a[505][505];
int sum[505][505];
int n,m,qq;int lowbit(int x)
{return x&(-x);
}void inser(int x,int y,int k)
{for(int i = x; i <= n; i+=lowbit(i))for(int j = y; j <= m; j+=lowbit(j)){sum[i][j] ^= k;}
}int query(int x,int y)
{int ans = 0;for(int i = x; i >= 1; i-=lowbit(i))for(int j = y; j >= 1; j-=lowbit(j)){ans ^= sum[i][j];}return ans;
}int main()
{int T;scanf("%d",&T);while(T--){int q;scanf("%d%d%d",&n,&m,&q);memset(sum,0,sizeof(sum));for(int i = 1; i <= n; i++)for(int j = 1; j <= m; j++){scanf("%d",&a[i][j]);inser(i,j,a[i][j]);}for(int i = 1; i <= q; i++){int qq,x1,y1,x2,y2,tt;scanf("%d",&qq);if(qq == 1){scanf("%d%d%d%d",&x1,&y1,&x2,&y2);int ans = 0;ans ^= query(x2, y2);if(y1 > 1) ans ^= query(x2, y1 - 1);if(x1 > 1) ans ^= query(x1 - 1, y2);if(x1 > 1 && y1 > 1) ans ^= query(x1 - 1, y1 - 1);if(ans)printf("Yes\n");elseprintf("No\n");}else{scanf("%d%d%d",&x1,&y1,&tt);inser(x1,y1,a[x1][y1]^tt);a[x1][y1] = tt;}}}return 0;
}

  

转载于:https://www.cnblogs.com/Przz/p/5409746.html

hdu 5465 (树状数组 + 博弈)相关推荐

  1. hdu 5465 树状数组

    因为xor具有前缀和性质,所以可以建立一颗二维树状数组,写起来只是稍微有点改变,感觉此题还是很不错的,结合了数据结构和博弈. 1 #include <iostream> 2 #includ ...

  2. HDU 4358 树状数组+思路

    http://acm.hdu.edu.cn/showproblem.php?pid=4358 如图所示,当k==3时,如果我们扫描到红线所在的位置. 则符合条件的区间就是从红线到两条紫线所包含的区间( ...

  3. hdu 4991(树状数组优化dp)

    Ordered Subsequence Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  4. hdu 1166 树状数组解

    树状数组解决   (关于树状数组参考大佬的博客https://www.cnblogs.com/hsd-/p/6139376.html) 然后就很好理解这题了,代码附上 /*hdu 1166 单点修改, ...

  5. hdu 3333 树状数组+离线处理

    思路:既然要求的是不同的元素的和,那么我们可以想办法让每个值在区间中只出现一次,于是想到了离线的算法:将查询按照右端点排序,位置在右端点之前的元素都插入到树状数组中,对于已经出现过的值,我们要先删除( ...

  6. hdu 4417(树状数组+离线算法)

    解题思路:这道题要求某区间内比h小的个数,其实这里可以类似于树状数组求逆序数那样.关键是如何转换成树状数组的模型,这才是本题的难点. 我们首先分析,如果知道h在该区间的哪个位置,那么剩下的就很好做了. ...

  7. hdu 1394(树状数组求逆序数)

    解题思路:这道题是求循环数组中逆序数最小值,求逆序数这里肯定是用树状数组.只是这里有一点点变化,由于题目中n位数是0-n-1的一个排列,所以num[i]可表示为比num[i]小的数的个数.把第一位的数 ...

  8. Weak Pair HDU - 5877 树状数组+离散化+DFS遍历

    题意 给我们一颗有根有向树 以及每个点得权值a[1]~a[n] 需要我们求出在这颗树种有多少对满足以下两个条件的pair (1)u是v的祖先节点 (2)a[u]*a[v]<= k N<=1 ...

  9. hdu 4970 树状数组 “改段求段”

    题意:塔防.给1--n,给出m个塔,每个塔有攻击力,给出k个怪兽的位子和血量,问有几只可以到达n点. 今天刚刚复习了树状数组,就碰到这个题,区间更新.区间求和类型.第三类树状数组可以斩. 注意一下大数 ...

最新文章

  1. tomcat8 热部署
  2. 一般能达到多少_实话实说:一般家庭存款有多少?你又达到标准了吗?
  3. python2与python3之间的主要区别
  4. OpenCV霍夫圈检测Hough Circle Detection的实例(附完整代码)
  5. 用html5做一条线,使用HTML5 canvas绘制线条的方法
  6. 【GDOI 2011 DAY2 T3】零什么的最讨厌了 (快速求阶乘、中国剩余定理)
  7. 自如CEO熊林接任董事长
  8. 安卓中的@Nullable和NonNull(NotNull) 等 注释
  9. python练手经典100例-非常适合Python菜鸟练手的趣味题(内附学习教程分享)
  10. sqlserver 分组合并列_[雅思经验]?两个月备考,一战雅思7.5分经验分享!!!
  11. matlab 稀疏矩阵 乘法,Matlab 矩阵运算
  12. C语言实现图片找茬,[创意心得]大家来找茬(C语言)
  13. ook的matlab,【伪技术】基于OOK的语音信号的数字传输
  14. JNA使用问题及解决
  15. 一文读懂对抗学习!5千字精炼提干
  16. 技术VC=技术+VC?技术VC公司如何生存?
  17. 怎么翻译Excel表格?两个方法可以轻松翻译Excel
  18. 51nod 1597 有限背包计数问题 DP 根号分治
  19. python、pip安装
  20. Android display

热门文章

  1. 物联网感知-脉冲式电子围栏技术及解决方案
  2. 非静态内部类Handler类引起内存泄露
  3. 手机信号推流到rtmp服务器,大概是最简单的 rtmp 推流服务器搭建方法
  4. 万字长文深度解读5G射频,国产机会在哪里?
  5. java接口fastjson_JSON 走进Java接口测试之fastjson指南 _好机友
  6. sql巨慢之utf8mb4的隐藏问题
  7. Excel怎么提取销售量最大的月份
  8. 58同城——青龙脚本
  9. 论文解读- nnU-Net: Self-adapting Framework for U-Net-Based Medical Image Segmentation(附实现教程)
  10. keepAlive使用方法