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");
else
printf("No\n");
}
else
{
scanf("%d%d%d",&x1,&y1,&tt);
inser(x1,y1,a[x1][y1]^tt);
a[x1][y1] = tt;
}
}
}
return 0;
}
hdu 5465 (树状数组 + 博弈)的更多相关文章
- hdu 4638 树状数组 区间内连续区间的个数(尽可能长)
Group Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- hdu 4777 树状数组+合数分解
Rabbit Kingdom Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- HDU 2852 (树状数组+无序第K小)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2852 题目大意:操作①:往盒子里放一个数.操作②:从盒子里扔掉一个数.操作③:查询盒子里大于a的第K小 ...
- HDU 4911 (树状数组+逆序数)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4911 题目大意:最多可以交换K次,就最小逆序对数 解题思路: 逆序数定理,当逆序对数大于0时,若ak ...
- hdu 5792(树状数组,容斥) World is Exploding
hdu 5792 要找的无非就是一个上升的仅有两个的序列和一个下降的仅有两个的序列,按照容斥的思想,肯定就是所有的上升的乘以所有的下降的,然后再减去重复的情况. 先用树状数组求出lx[i](在第 i ...
- HDU 1934 树状数组 也可以用线段树
http://acm.hdu.edu.cn/showproblem.php?pid=1394 或者是我自己挂的专题http://acm.hust.edu.cn/vjudge/contest/view. ...
- 2018 CCPC网络赛 1010 hdu 6447 ( 树状数组优化dp)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=6447 思路:很容易推得dp转移公式:dp[i][j] = max(dp[i][j-1],dp[i-1][j ...
- 【模板】HDU 1541 树状数组
http://acm.hdu.edu.cn/showproblem.php?pid=1541 题意:给你一堆点,每个点右一个level,为其右下方所有点的数量之和,求各个level包含的点数. 题解: ...
- hdu 5147 树状数组
题意:求满足a<b<c<d,A[a]<A[b],A[c]<A[d]的所有四元组(a,b,c,d)的个数 看到逆序对顺序对之类的问题一开始想到了曾经用归并排序求逆序对,结果 ...
随机推荐
- PTA題目的處理(三)
题目7-1 高速公路超速處罰 1.實驗代碼 #include <stdio.h> //#include <stdlib.h> int main() { int csp,lsp; ...
- Linux下硬盘分区
1 fdisk -l查看硬盘及分区信息 我的系统(Archlinux)下的命令效果如下: 由上面的图片可以得知该系统只挂载了1个硬盘,命名为sda,其有2个主分区,sda1和sda2,至于为什么这么 ...
- python 操作PostgreSQL
pip install psycopg Python psycopg2 模块APIs 以下是psycopg2的重要的的模块例程可以满足Python程序与PostgreSQL数据库的工作. S.N. A ...
- DenseNet
特点: dense shortcut connections 结构: DenseNet 是一种具有密集连接的卷积神经网络.在该网络中,任何两层之间都有直接的连接,也就是说,网络每一层的输入都是前面所有 ...
- nyoj 黑色帽子
黑色帽子 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 最近发现了一个搞笑的游戏,不过目前还没玩过.一个舞会上,每个人头上都戴着一顶帽子,帽子只有黑 ...
- sql 多条记录插入
--多条记录插入,用逗号分开值. INSERT dbo.studentinfor ( id, name, class, age, hpsw ) ', -- id - nvarchar(50) N'te ...
- php_类的定义
此文章为原创见解,例子各方面也是东拼西凑.如果有错请留言.谢谢 在面向对象的思维中提出了两个概念,类和对象. 类是对某一类实物的抽象描述,而对象用于表示现实中该类事物的个体, 例子:老虎是父类,东北虎 ...
- OpenShift实战(二):OpenShift节点扩容
1.新增节点信息 增加节点如下,请将xxx改为自己的域名 node6.xxx.net Node 192.168.8.90 8G 20G/60G 4C node7.xxx.net Node 192.16 ...
- H5 FormData对象的作用及用法
JS: function uploadFileAndParam() { var url = "http://localhost:42561/api/upload/UploadPost&quo ...
- MySQL binlog 日志
一:MySQL 日志的三种类型: statement.row.mix 格式.推荐使用row格式. 怎么设置自己的日志格式呢? 1. set globle binlog_format='MIXED' 2 ...