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)的个数 看到逆序对顺序对之类的问题一开始想到了曾经用归并排序求逆序对,结果 ...
随机推荐
- IQKeyboardManager使用方法
使用方法: 将IQKeyboardManager 和 IQSegmentedNextPrevious类文件加进项目中.在AppDelegate文件中写下以下一行代码: [IQKeyBoardManag ...
- idea搭建springdata+mongodb+maven+springmvc
idea搭建springdata+mongodb+maven+springmvc 今天我们来学习一下SpringData操作MongoDB. 项目环境:IntelliJ IDEA2017+maven3 ...
- 解决java.lang.NoSuchMethodError:org.joda.time.DateTime.withTimeAtStartOfDay() Lorg/joda/time/DateTime
问题:项目放在weblogic运行,报错 java.lang.NoSuchMethodError: org.joda.time.DateTime.withTimeAtStartOfDay()Lorg/ ...
- php网上支付易宝
巴巴运动网是通过易宝向招商银行打钱,这个首先易宝是需要审核巴巴运动网的钱来的是否正当不然易宝就成了一个洗钱的工具,这个是犯法的:因为钱的来路不明!财政部是需要抓起来的!所以钱的流向实际上是用户的招商银 ...
- SQL Server(MySql)中的联合主键(联合索引) 索引分析
最近有人问到这个问题,之前也一直没有深究联合索引具体使用逻辑,查阅多篇文章,并经过测试,得出一些结论 测试环境:SQL Server 2008 R2 测试结果与MySql联合索引查询机制类似,可以认为 ...
- hadoop2.6.0实践:002 检查伪分布式环境搭建
1.检查网络配置[root@hadoop-master ~]# cat /etc/sysconfig/networkNETWORKING=yesHOSTNAME=hadoop-masterGATEWA ...
- Tess4J OCR简单使用教程
Tess4J简介 Tesseract-OCR支持中文识别,并且开源和提供全套的训练工具,是快速低成本开发的首选.而Tess4J则是Tesseract在Java PC上的应用.在英文和数字识别中性能还是 ...
- linux搭建django项目基本步骤
一 linux下django基本项目搭建流程:M model 用于与数据库交互V view 接受前台请求 调用model获取结果,调用T获取页面,返回给前台T template 接受view的要求 生 ...
- lambda匿名函数透析
lambda匿名函数透析 目录 1 匿名函数的作用... 1 2 匿名函数的格式... 1 3 匿名函数实例代码... 3 1 匿名函数的作用 ...
- POJ-1860 Currency Exchange---Bellman-Ford判断正环
题目链接: https://vjudge.net/problem/POJ-1860 题目大意: 我们的城市有几个货币兑换点.让我们假设每一个点都只能兑换专门的两种货币.可以有几个点,专门从事相同货币兑 ...