题意: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. Channel Estimation for High Speed Wireless Systems using Gaussian Particle Filter and Auxiliary Particle Filter

    目录 论文来源 摘要 基本概念 1.时变信道 2.粒子滤波 3.高斯粒子滤波 4.辅助粒子滤波 比较 借鉴之处 论文来源 International Conference on Communicati ...

  2. go语言指南之斐波纳契闭包

    练习:斐波纳契闭包 让我们用函数做些好玩的事情. 实现一个 fibonacci 函数,它返回一个函数(闭包),该闭包返回一个斐波纳契数列 `(0, 1, 1, 2, 3, 5, ...)`. 这是一个 ...

  3. 7-3 jmu-python-回文数判断(5位数字) (10 分)

    本题目要求输入一个5位自然数n,如果n的各位数字反向排列所得的自然数与n相等,则输出‘yes’,否则输出‘no’. 输入格式: 13531 输出格式: yes 输入样例1: 13531 输出样例1: ...

  4. Spring-Boot-应用可视化监控

    图文简介 快速开始 1.Spring Boot 应用暴露监控指标[版本 1.5.7.RELEASE] 首先,添加依赖如下依赖: <dependency> <groupId>or ...

  5. 如何为SpringBoot服务添加HTTPS证书

    HTTPS是HTTP的安全版本,旨在提供数据传输层安全性(TLS).当你的应用不使用HTTP协议的时候,浏览器地址栏就会出现一个不安全的提示.HTTPS加密每个数据包以安全方式进行传输,并保护敏感数据 ...

  6. 简说Python之IO

    闺女,你在玩电脑什么游戏? 爸爸,我在玩植物大战僵尸呢. 闺女,你知道什么是输入输出设备吗? 爸爸,??? 你看,咱们的键盘和鼠标 ,就是可以控制那些植物的工具.这些发出指令的就是输入设备.咱们可以用 ...

  7. JavaMail(二):利用JavaMail发送复杂邮件

    上一篇文章我们学习了利用JavaMail发送简单邮件,这篇文章我们利用JavaMail发送稍微复杂一点的邮件(包含文本.图片.附件).这里只贴出核心代码,其余代码可参考JavaMail(一):利用Ja ...

  8. 网络编程---socket模块

    内容中代码都是先写  server端, 再写 client端 1 TCP和UDP对比 TCP(Transmission Control Protocol)可靠的.面向连接的协议(eg:打电话).传输效 ...

  9. html5特性简要概括

    1.html5主要的设计目的: 互联网语义化,以便更好地被人类和机器阅读 更好的在移动设备上支持web应用 https://www.w3.org/TR/html5 新增内容: 新的语义标签 <h ...

  10. JetBrains Quest 3

    起因 今天早上看了一篇博文: 此时的我:"哎,这等好事不等我!" 然后......我打开官方推特: "什么?最后的任务?" 于是就有了这篇文章 开始操作 1.神 ...