HDU 5465 Clarke and puzzle (二维树状数组维护区间异或)
题目链接: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 (二维树状数组维护区间异或)相关推荐
- 二维树状数组模板(区间修改+区间查询)
二维树状数组模板(区间修改+区间查询) 例题:JOIOI上帝造题的七分钟 一共两种操作: \(L\ x_1\ y_1\ x_2\ y_2\ d\):把\((x_1,y_1)\),\((x_2,y_2) ...
- HDU - 5517 Triple(三维偏序-二维树状数组/CDQ分治)
题目链接:点击查看 题目大意:给出 n 个二元对 ( a , b ) 和 m 个三元对 ( c , d , e ),对于所有 b == e 的二元对和三元对,可以通过某种运算形成一个新的三元对 ( a ...
- hdu 5465 Clarke and puzzle (二维树状数组+nim博弈)
解析: 利用二维树状数组来区间询问异或和,以及单点更新,然后利用nim博弈的结论判断胜负. mymy codecode #include <cstdio> #include <cst ...
- P3287-[SCOI2014]方伯伯的玉米田【二维树状数组,dp】
正题 题目链接:https://www.luogu.com.cn/problem/P3287 题目大意 nnn个玉米高度不同,可以选择kkk个区间拔高111个高度,求最长不降子序列长度. 解题思路 显 ...
- 树状数组 / 二维树状数组
一维树状数组 · 单点修改 + 单点查询: 直接使用即可 · 区间修改 + 单点查询: 另外维护一个维护前缀和的树状数组,查询时查询与原值相加即可. · 区间修改 + 区间查询: 若要查询区间$[1, ...
- The Untended Antiquity (二维树状数组 哈希)
题意: 3种操作 1 在左上角 (r1,c1).右下角 (r2,c2) 的矩形框上设置围墙 2 把左上角 (r1,c1).右下角 (r2,c2) 的矩形框上的围墙删掉 3 询问 (r1,c1) 能否不 ...
- (二维树状数组)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 ...
- 问题 G: 鸽子 (gu)-------------------------思维(二维树状数组)
题目描述 一共有n个人依次走进机房,第i个人的实力为ai. 第i个人在走进机房时,会膜拜当前已经在机房里的人x,当且仅当ax>ai. 同理,第i个人在走进机房时,会被当前已经在机房里的人x膜拜, ...
- 【BZOJ3594】方伯伯的玉米田(SCOI2014)-DP+二维树状数组
测试地址:方伯伯的玉米田 做法:本题需要用到DP+二维树状数组. 首先,我们发现每次拔高的区间都是一个后缀.这个自己画一画就大概能证出来了. 那么我们就有了一个状态定义:令 f(i,j) f ( i ...
最新文章
- 【报告分享】2020上半年短视频内容发展盘点.pdf(附下载链接)
- mysql主从复制巡检脚本_mysql主从复制监控shell脚本
- springMVC使用HandlerMethodArgumentResolver 自定义解析器实现请求参数绑定方法参数
- 转:linux中select()函数分析
- Rust : rand库与不同分布下的随机数产生
- 申请美国大学计算机专业,申请美国大学计算机CS专业的4个要点
- Tomcat的乱码问题解决(最全面)
- 最快倾斜摄影三维建模-台式、便携、多机集群配置推荐
- scrapy爬虫部署服务器
- python中英文时间转换
- 数据驱动测试(DDT)入门
- win10修改用户名_win10最详细优化设置|win10专业版笔记本优化教程
- java队名,《JavaWeb程序开发入门》课后练习(含答案)
- Java--面向对象_中
- Win11系统注销在哪?Win11系统注销的方法
- 开源电子表格Luckysheet强势推出在线协作
- 求微信小程序开发交流群
- Qt读取界面的时间dateEdit,并将时间写入数据库中
- Android Apk 签名方案
- 用全景管家免费下载720YUN全景图并制作效果预览
热门文章
- tff.learning 模块
- 【mysql】How to delete antiquated binlog
- 京东旗舰店店铺商品详情数据分析接口对接代码教程
- 基于MySQL的电商零售订单数据分析
- ps读写ddr3里面的数据 zynq_ZYNQ_PL与PS的DDR交互
- 中国磁力应用设备市场运行现状调研与未来发展前景预测报告2022年版
- php类似if,php 比较两篇文章的相似度的方法
- 安科瑞ADW300系列三相电能表接线及modbus协议
- 计算某天是星期几推导
- icloud使用技巧_如何使用Apple Watch或iCloud查找iPhone