题意:t组样例 ,输入 n,m,表示n*n的矩阵进行m次操作 ,C: 输入两个坐标 ,组成的矩形 进行取反操作 ,Q:对输的坐标位置输入其值。

思路:一开始想的是用1000(表示x轴)个线段树(对每段y进行操作)来记录,也是二维的 ,第一维暴力 ,第二维线段树 ,结果TI ,原来还有二维线段树,每个对应的节点都有一颗线段树(好像跟我的差不多)

更新:先找到x对应的区间 ,对相应的y区间修改。

查询:对于每次找的x 都进行一次查询y

#include<string.h>
#include<stdio.h>
#include<algorithm>
#include<iostream>
using namespace std;
int e[4040][4040],n;
/*x对应的每个节点都有一颗线段树*/
void updatey(int x,int y,int l,int r,int o,int t)
{
if(x<=l&&y>=r)
{
e[t][o]++;/*跟下面查询有关*/
return;
}
int mid=(l+r)>>1;
if(x<=mid) updatey(x,y,l,mid,o<<1,t);
if(y>mid) updatey(x,y,mid+1,r,o<<1|1,t);
return ;
}
void updatex(int x,int y,int t1,int t2,int l,int r,int o)
{
if(x<=l&&y>=r)
{
updatey(t1,t2,1,n,1,o);
return ;
}
int mid=(l+r)>>1;
if(x<=mid) updatex(x,y,t1,t2,l,mid,o<<1);
if(y>mid) updatex(x,y,t1,t2,mid+1,r,o<<1|1);
return ;
}
int ans;
void queryy(int x,int l,int r,int o,int t)
{
ans+=e[t][o];
if(l==r)
return ;
int mid=(l+r)>>1;
if(x<=mid) queryy(x,l,mid,o<<1,t);
else queryy(x,mid+1,r,o<<1|1,t);
return ;
}
void queryx(int x,int y,int l,int r,int o)/*查询所有的x线段树*/
{
queryy(y,1,n,1,o);/*每个节点x都查询y线段树*/
if(l==r)
return ;
int mid=(l+r)>>1;
if(x<=mid) queryx(x,y,l,mid,o<<1);
else queryx(x,y,mid+1,r,o<<1|1);
}
int main()
{
int t,m;
scanf("%d",&t);
while(t--)
{
memset(e,0,sizeof(e));
scanf("%d%d",&n,&m);
char s[10];
int x1,y1,x2,y2;
for(int i=1;i<=m;i++)
{
scanf("%s",s);
if(s[0]=='C')
{
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
updatex(x1,x2,y1,y2,1,n,1);
}
else if(s[0]=='Q')
{
ans=0;
scanf("%d%d",&x1,&y1);
queryx(x1,y1,1,n,1);
printf("%d\n",ans%2);
}
}
printf("\n");
}
return 0;
}

最新文章

  1. PyQt4入门学习笔记(一)
  2. mysql-5.7.14 源码安装笔记
  3. 爱上MVC~MVC4模型验证可以放在前端
  4. Node基础:资源压缩之zlib
  5. hdu4940 Destroy Transportation system(2014多校联合第七场)
  6. 【MySQL】mysql buffer pool结构分析
  7. IOS学习感想
  8. 30个HTML5学习资源
  9. ARM学习笔记5——程序状态寄存器
  10. tomcat线程数查看
  11. 如何区分监督学习(supervised learning)和非监督学习(unsupervised learning)
  12. 没有开发者账号,如何解锁wp8设备
  13. wpf之ListBox横向显示所有ListBoxItem
  14. webx request注入单例增强实现
  15. Awesome Hadoop
  16. webpack4.x版本splitChunksPlugin的配置项详解与实际应用场景
  17. 利用PIL和Selenium实现页面元素截图
  18. 洗礼灵魂,修炼python(76)--全栈项目实战篇(4)—— 购物车系统
  19. python之路--反射
  20. Archlinux软件包管理pacman基本使用说明

热门文章

  1. Flutter Widgets 之 RichText
  2. opencv +数字识别
  3. PHPRAP 1.0.2 发布,修复安装失败 Bug 和优化细节
  4. FCC成都社区&#183;前端周刊 第 1 期
  5. html5调用摄像头功能
  6. 编写程序实现根据考试成绩将成绩分为A,B,C,D四档。
  7. django数据库分库migrate
  8. OpenGL 实现视频编辑中的转场效果
  9. 7,MapReduce基础
  10. Azure CLI 简单入门