题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5465

解题思路:
因为要对大量的区间进行异或,所以考虑用二维树状数组就行维护。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<queue>
#include<algorithm>
#include<stack>
#include<cstring>
#include<vector>
#include<list>
#include<set>
#include<string>
#include<map>
using namespace std;
int ma[510][510],n,m,q,original[510][510];
void add(int x,int y,int t)
{for(int i=x; i<=n; i+=(i&-i))for(int j=y; j<=m; j+=(j&-j)){ma[i][j]^=t;}return ;
}int sum(int x,int y)
{int xx=0;for(int i=x; i>0; i-=(i&-i))for(int j=y; j>0; j-=(j&-j)){xx^=ma[i][j];}return xx;
}
int main()
{int _;cin>>_;while(_--){memset(ma,0,sizeof(ma));memset(original,0,sizeof(original));scanf("%d%d%d",&n,&m,&q);for(int i=1; i<=n; i++)for(int j=1; j<=m; j++){scanf("%d",&original[i][j]);add(i,j,original[i][j]);}for(int i=1;i<=q;i++){int choose;scanf("%d",&choose);if(choose==1){int x1,x2,y1,y2;scanf("%d%d%d%d",&x1,&y1,&x2,&y2);if(sum(x2,y2)^sum(x2,y1-1)^sum(x1-1,y2)^sum(x1-1,y1-1)) printf("Yes\n");else printf("No\n");}else{int x1,y1,change;scanf("%d%d%d",&x1,&y1,&change);add(x1,y1,original[x1][y1]^change);original[x1][y1]=change;}}}return  0;
}

HDU 5465 Clarke and puzzle (二维树状数组维护区间异或)相关推荐

  1. 二维树状数组模板(区间修改+区间查询)

    二维树状数组模板(区间修改+区间查询) 例题:JOIOI上帝造题的七分钟 一共两种操作: \(L\ x_1\ y_1\ x_2\ y_2\ d\):把\((x_1,y_1)\),\((x_2,y_2) ...

  2. HDU - 5517 Triple(三维偏序-二维树状数组/CDQ分治)

    题目链接:点击查看 题目大意:给出 n 个二元对 ( a , b ) 和 m 个三元对 ( c , d , e ),对于所有 b == e 的二元对和三元对,可以通过某种运算形成一个新的三元对 ( a ...

  3. hdu 5465 Clarke and puzzle (二维树状数组+nim博弈)

    解析: 利用二维树状数组来区间询问异或和,以及单点更新,然后利用nim博弈的结论判断胜负. mymy codecode #include <cstdio> #include <cst ...

  4. P3287-[SCOI2014]方伯伯的玉米田【二维树状数组,dp】

    正题 题目链接:https://www.luogu.com.cn/problem/P3287 题目大意 nnn个玉米高度不同,可以选择kkk个区间拔高111个高度,求最长不降子序列长度. 解题思路 显 ...

  5. 树状数组 / 二维树状数组

    一维树状数组 · 单点修改 + 单点查询: 直接使用即可 · 区间修改 + 单点查询: 另外维护一个维护前缀和的树状数组,查询时查询与原值相加即可. · 区间修改 + 区间查询: 若要查询区间$[1, ...

  6. The Untended Antiquity (二维树状数组 哈希)

    题意: 3种操作 1 在左上角 (r1,c1).右下角 (r2,c2) 的矩形框上设置围墙 2 把左上角 (r1,c1).右下角 (r2,c2) 的矩形框上的围墙删掉 3 询问 (r1,c1) 能否不 ...

  7. (二维树状数组)E - Stars

    E - Stars 题意:B表示点亮改点,D表示熄灭,Q查询区间内亮的个数 Sample Input 5 B 581 145 B 581 145 Q 0 600 0 200 D 581 145 Q 0 ...

  8. 问题 G: 鸽子 (gu)-------------------------思维(二维树状数组)

    题目描述 一共有n个人依次走进机房,第i个人的实力为ai. 第i个人在走进机房时,会膜拜当前已经在机房里的人x,当且仅当ax>ai. 同理,第i个人在走进机房时,会被当前已经在机房里的人x膜拜, ...

  9. 【BZOJ3594】方伯伯的玉米田(SCOI2014)-DP+二维树状数组

    测试地址:方伯伯的玉米田 做法:本题需要用到DP+二维树状数组. 首先,我们发现每次拔高的区间都是一个后缀.这个自己画一画就大概能证出来了. 那么我们就有了一个状态定义:令 f(i,j) f ( i ...

最新文章

  1. 【报告分享】2020上半年短视频内容发展盘点.pdf(附下载链接)
  2. mysql主从复制巡检脚本_mysql主从复制监控shell脚本
  3. springMVC使用HandlerMethodArgumentResolver 自定义解析器实现请求参数绑定方法参数
  4. 转:linux中select()函数分析
  5. Rust : rand库与不同分布下的随机数产生
  6. 申请美国大学计算机专业,申请美国大学计算机CS专业的4个要点
  7. Tomcat的乱码问题解决(最全面)
  8. 最快倾斜摄影三维建模-台式、便携、多机集群配置推荐
  9. scrapy爬虫部署服务器
  10. python中英文时间转换
  11. 数据驱动测试(DDT)入门
  12. win10修改用户名_win10最详细优化设置|win10专业版笔记本优化教程
  13. java队名,《JavaWeb程序开发入门》课后练习(含答案)
  14. Java--面向对象_中
  15. Win11系统注销在哪?Win11系统注销的方法
  16. 开源电子表格Luckysheet强势推出在线协作
  17. 求微信小程序开发交流群
  18. Qt读取界面的时间dateEdit,并将时间写入数据库中
  19. Android Apk 签名方案
  20. 用全景管家免费下载720YUN全景图并制作效果预览

热门文章

  1. tff.learning 模块
  2. 【mysql】How to delete antiquated binlog
  3. 京东旗舰店店铺商品详情数据分析接口对接代码教程
  4. 基于MySQL的电商零售订单数据分析
  5. ps读写ddr3里面的数据 zynq_ZYNQ_PL与PS的DDR交互
  6. 中国磁力应用设备市场运行现状调研与未来发展前景预测报告2022年版
  7. php类似if,php 比较两篇文章的相似度的方法
  8. 安科瑞ADW300系列三相电能表接线及modbus协议
  9. 计算某天是星期几推导
  10. icloud使用技巧_如何使用Apple Watch或iCloud查找iPhone