hdu 5465 (树状数组 + 博弈)
题意:基于矩阵的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 (树状数组 + 博弈)相关推荐
- hdu 5465 树状数组
因为xor具有前缀和性质,所以可以建立一颗二维树状数组,写起来只是稍微有点改变,感觉此题还是很不错的,结合了数据结构和博弈. 1 #include <iostream> 2 #includ ...
- HDU 4358 树状数组+思路
http://acm.hdu.edu.cn/showproblem.php?pid=4358 如图所示,当k==3时,如果我们扫描到红线所在的位置. 则符合条件的区间就是从红线到两条紫线所包含的区间( ...
- hdu 4991(树状数组优化dp)
Ordered Subsequence Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- hdu 1166 树状数组解
树状数组解决 (关于树状数组参考大佬的博客https://www.cnblogs.com/hsd-/p/6139376.html) 然后就很好理解这题了,代码附上 /*hdu 1166 单点修改, ...
- hdu 3333 树状数组+离线处理
思路:既然要求的是不同的元素的和,那么我们可以想办法让每个值在区间中只出现一次,于是想到了离线的算法:将查询按照右端点排序,位置在右端点之前的元素都插入到树状数组中,对于已经出现过的值,我们要先删除( ...
- hdu 4417(树状数组+离线算法)
解题思路:这道题要求某区间内比h小的个数,其实这里可以类似于树状数组求逆序数那样.关键是如何转换成树状数组的模型,这才是本题的难点. 我们首先分析,如果知道h在该区间的哪个位置,那么剩下的就很好做了. ...
- hdu 1394(树状数组求逆序数)
解题思路:这道题是求循环数组中逆序数最小值,求逆序数这里肯定是用树状数组.只是这里有一点点变化,由于题目中n位数是0-n-1的一个排列,所以num[i]可表示为比num[i]小的数的个数.把第一位的数 ...
- Weak Pair HDU - 5877 树状数组+离散化+DFS遍历
题意 给我们一颗有根有向树 以及每个点得权值a[1]~a[n] 需要我们求出在这颗树种有多少对满足以下两个条件的pair (1)u是v的祖先节点 (2)a[u]*a[v]<= k N<=1 ...
- hdu 4970 树状数组 “改段求段”
题意:塔防.给1--n,给出m个塔,每个塔有攻击力,给出k个怪兽的位子和血量,问有几只可以到达n点. 今天刚刚复习了树状数组,就碰到这个题,区间更新.区间求和类型.第三类树状数组可以斩. 注意一下大数 ...
最新文章
- tomcat8 热部署
- 一般能达到多少_实话实说:一般家庭存款有多少?你又达到标准了吗?
- python2与python3之间的主要区别
- OpenCV霍夫圈检测Hough Circle Detection的实例(附完整代码)
- 用html5做一条线,使用HTML5 canvas绘制线条的方法
- 【GDOI 2011 DAY2 T3】零什么的最讨厌了 (快速求阶乘、中国剩余定理)
- 自如CEO熊林接任董事长
- 安卓中的@Nullable和NonNull(NotNull) 等 注释
- python练手经典100例-非常适合Python菜鸟练手的趣味题(内附学习教程分享)
- sqlserver 分组合并列_[雅思经验]?两个月备考,一战雅思7.5分经验分享!!!
- matlab 稀疏矩阵 乘法,Matlab 矩阵运算
- C语言实现图片找茬,[创意心得]大家来找茬(C语言)
- ook的matlab,【伪技术】基于OOK的语音信号的数字传输
- JNA使用问题及解决
- 一文读懂对抗学习!5千字精炼提干
- 技术VC=技术+VC?技术VC公司如何生存?
- 怎么翻译Excel表格?两个方法可以轻松翻译Excel
- 51nod 1597 有限背包计数问题 DP 根号分治
- python、pip安装
- Android display
热门文章
- 物联网感知-脉冲式电子围栏技术及解决方案
- 非静态内部类Handler类引起内存泄露
- 手机信号推流到rtmp服务器,大概是最简单的 rtmp 推流服务器搭建方法
- 万字长文深度解读5G射频,国产机会在哪里?
- java接口fastjson_JSON 走进Java接口测试之fastjson指南 _好机友
- sql巨慢之utf8mb4的隐藏问题
- Excel怎么提取销售量最大的月份
- 58同城——青龙脚本
- 论文解读- nnU-Net: Self-adapting Framework for U-Net-Based Medical Image Segmentation(附实现教程)
- keepAlive使用方法