题意: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;
}

二维线段树 poj-2155的更多相关文章

  1. poj 2155:Matrix(二维线段树,矩阵取反,好题)

    Matrix Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 17880   Accepted: 6709 Descripti ...

  2. POJ 2155 Matrix (二维线段树)

    Matrix Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 17226   Accepted: 6461 Descripti ...

  3. poj 2155 matrix 二维线段树 线段树套线段树

    题意 一个$n*n$矩阵,初始全为0,每次翻转一个子矩阵,然后单点查找 题解 任意一种能维护二维平面的数据结构都可以 我这里写的是二维线段树,因为四分树的写法复杂度可能会退化,因此考虑用树套树实现二维 ...

  4. POJ 2155 Matrix (二维线段树入门,成段更新,单点查询 / 二维树状数组,区间更新,单点查询)

    题意: 有一个n*n的矩阵,初始化全部为0.有2中操作: 1.给一个子矩阵,将这个子矩阵里面所有的0变成1,1变成0:2.询问某点的值 方法一:二维线段树 参考链接: http://blog.csdn ...

  5. POJ 2155 Matrix【二维线段树】

    题目大意:给你一个全是0的N*N矩阵,每次有两种操作:1将矩阵中一个子矩阵置反,2.查询某个点是0还是1 思路:裸的二维线段树 #include<iostream>#include< ...

  6. POJ 2155 二维线段树 经典的记录所有修改再统一遍历 单点查询

    本来是想找一个二维线段树涉及懒惰标记的,一看这个题,区间修改,单点查询,以为是懒惰标记,敲到一半发现这二维线段树就不适合懒惰标记,你更新了某段的某列,但其实其他段的相应列也要打标记,但因为区间不一样, ...

  7. poj 1195:Mobile phones(二维线段树,矩阵求和)

    Mobile phones Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 14391   Accepted: 6685 De ...

  8. POJ2155Matrix(二维线段树)

    链接http://poj.org/problem?id=2155 题目操作就是说,每次操作可以是编辑某个矩形区域,这个区域的0改为1,1改为0,每次查询只查询某一个点的值是0还是1. 方法:二维线段树 ...

  9. POJ2029 二维线段树

    Get Many Persimmon Trees POJ - 2029 Seiji Hayashi had been a professor of the Nisshinkan Samurai Sch ...

  10. POJ1195 二维线段树

    Mobile phones POJ - 1195 Suppose that the fourth generation mobile phone base stations in the Tamper ...

随机推荐

  1. 前端每日实战:123# 视频演示如何用纯 CSS 创作一架双冀飞机

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/yxVYRL 可交互视频 此视频是可 ...

  2. Python 第一天学习记录

  3. 神奇的 SQL 之 ICP → 索引条件下推

    开心一刻 楼主:来,我们先排练一遍 小伙伴们:好 嘿.哈.嚯 楼主:非常好,就是这个节奏,我们开始吧 楼主:啊.啊.啊,疼 ! 你们是不是故意的 ? 回表与覆盖索引 正式讲 ICP 之前了,我们先将相 ...

  4. JavaScript面向对象class

    JavaScript面向对象class 本周逆战班学习的主题是“面向对象”,很多人觉得面向对象很难理解,但其实我们早就在面向对象的思想之中了,今天就让我们再重新认识一下他,主要介绍一下ES6中新增的c ...

  5. iTerm2 都不会用,还敢自称老司机?(上)

    对于需要长期与终端打交道的工程师来说,拥有一款称手的终端管理器是很有必要的,对于 Windows 用户来说,最好的选择是 Xshell,这个大家都没有异议.但对于 MacOS 用户来说,仍然毋庸置疑, ...

  6. swoole websocket_server 聊天室--群聊

    centos7  php7.2 swoole4.3 nginx1.8 websocket_server 代码 <?php $server = new Swoole\WebSocket\Serve ...

  7. utuntu sever1804显示中文putty可以输入中文

    默认情况下,putty连接ubuntu server以后,哪怕设置的Utf-8的连接,也是无法显示中文的. 应该是ubuntu服务器端,没有字库的问题. 如果在putty显示和输入中文呢,因为配置信息 ...

  8. docker 技术全面整理

    docker 和 vm 虚拟机技术比较像,但又有一些区别. vm 像真机一样有 BIOS ,有硬盘,有网卡,声卡,可以安装操作系统, win7 win10 macOS ubuntu centOS,有好 ...

  9. 程序员过关斩将-- 喷一喷坑爹的面向UI编程

    摒弃面向UI编程 为何喷起此次话题,因为前不久和我们首席架构师沟通,谈起程序设计问题,一不小心把UI扯进来,更把那些按照UI来编程的后台工程师也扯了进来.今天特意百度了一下(其实程序员应该去googl ...

  10. MATLAB神经网络(1) BP神经网络的数据分类——语音特征信号分类

    1.1 案例背景 1.1.1 BP神经网络概述 BP神经网络是一种多层前馈神经网络,该网络的主要特点是信号前向传递,误差反向传播.在前向传递中,输入信号从输入层经隐含层逐层处理,直至输出层.每一层的神 ...