POJ2155Matrix(二维线段树)

链接http://poj.org/problem?id=2155

题目操作就是说,每次操作可以是编辑某个矩形区域,这个区域的0改为1,1改为0,每次查询只查询某一个点的值是0还是1.

方法:二维线段树,这个东东我纠结了好久才慢慢弄好。二维线段树其实就就是在第一位区间的每个节点下再建一颗线段树,表示第二维的区间。

在修改的时候只需要先找到第一维的对应区间,在在这个区间的弟二维中查找对应区间,再做修改即可。而查找的时候,由于不同的第一维区间可能会有包含关系,所以需要对每个目标所在第一维区间查找第二维区间。

比如线段树的区间大小是3×3,那么在查找第一维区间是[1,2],第二维区间是[1,2]时,就需要在线段树第一维的[1,3]和[1,2]两个区间对第二维进行查找,因为修改操作的时候可能修改了第一维的[1,3]区间,同时也修改了[1,2]区间,这样的话就不能仅仅只查找某一个第一维的区间。

至于本题的解法,我们可以在修改时标记某一个节点,那么这个节点以下的区间就都是要修改的,当我们在查找的时候,只需要统计查找到这个点时,一路上有多少个被修改的区间,是偶数说明呗修改回来了,是奇数那就是被修改了。

aaarticlea/jpeg;base64,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*NucZbrXpFFJQUU1HS6ivlG9l+LBu7Tfm/nLf8keT+D/ANnnRdE+H9j4cu59SshFe3mpPH4a1q+0iKOW5neZ40+yzRM0SF9ih88KDgEmue8cfAfxDqT+OdA0C502Hwl498k6zdX91Mb2xYQpbzmCPy2WcywRIuXkjKPlz5mdo95oodOL0tpt6rs/LRfcNTkne+u9/O97+tz51+I/7PviXxPr/iO2s4vD+o6FrEen/wBm6nqV1PBqPhWW1jZI5bNEicSlGZpk/ewHfJIpYq2a9jtPh1pdn4tfxIt5rsmpuMNFLr9+9lym0kWZmNuvAzxGMHnrzXT0VSilr17/ANf8O+tyXrZdF/X9fgeO/Crwb4/8J+LPihrGs6Z4bCeI9QXU9OisNZuJSHS2it0imLWibARCGLrvxuI2HGTv+FvDHiXWfHFv4u8Yafo2j6hp+nz6ZY2Oi6hLfr5c0kUkskk0kEByTBEqoI8LtY7jvwvodFKMeXl/uqy+635af8HUble/n/w/5/1Y8v8AHvgXxRB4+i8a+B10ifWbjSH0O9ttbupbeHyhIZYJ1aOKQs0TtL+7KgOJT86beeO8bfAfxLpnwJ8HfDvwMujakdHvbC7ur3Xb6WxEptrqO6dlWKCb5pZEbI4Cbs/NjFfQNFJQSVl3T+5835tt97+Ss+Z3u/T8LflZLt95z2s2Go+ILaLSL7TbRtG1Gymg1WSHVJop4WZAuyDZEpcHLjzN8TLgEAk8eUaf+yxplh8X73xD/aGuXHh248NnRjbXXi7V7i5MjySeZkyTt+78uT5Rv+V/mVVYBq94opuEXJSa1V/xTVvubEpNR5b/ANXT/RHinhb9nC28IfHYeNbLUdYm0qLQl0+GDUPFGqXs32jznZt6zzOrxbHGEYkB/mCg/NXR+K/hVH8UNIhu/E0V7o/iKK1uLWNPDvirUre3RXbgM8DW/mg7Yyd8fGMcgZPpFFS6UZU/ZvbX8W2/zfyKjNxnzrfT8El+h454I+CepeDv2aNL+G8V+r6p/ZEGl393NqFxcxLuRI7poGlyyqE8wxxgKoO0AIOnr9tbRWdvFbwRrFBEgSONBgKoGAAPQCpKK2b5pOXf+vwMkrJR7f1+gUUUUigooooAKKKKACiiigD/2Q==" alt="" width="696" height="25" />

 #include <stdio.h>
#include <string.h>
#define xlson kx<<1, xl, mid
#define xrson kx<<1|1, mid+1, xr
#define ylson ky<<1, yl, mid
#define yrson ky<<1|1, mid+1, yr
#define MAXN 1005
#define mem(a) memset(a, 0, sizeof(a)) bool tree[MAXN<<][MAXN<<];
int X, N, T;
int num, X1, X2, Y1, Y2;
char ch; void editY(int kx,int ky,int yl,int yr)
{
if(Y1<=yl && yr<=Y2)
{
tree[kx][ky] = !tree[kx][ky];
return ;
}
int mid = (yl+yr)>>;
if(Y1 <= mid) editY(kx,ylson);
if(Y2 > mid) editY(kx,yrson);
} void editX(int kx,int xl,int xr)
{
if(X1<=xl && xr<=X2)
{
editY(kx,,,N);
return ;
}
int mid = (xl+xr)>>;
if(X1 <= mid) editX(xlson);
if(X2 > mid) editX(xrson);
} void queryY(int kx,int ky,int yl,int yr)
{
if(tree[kx][ky]) num ++;
if(yl==yr) return ;
int mid = (yl+yr)>>;
if(Y1 <= mid) queryY(kx,ylson);
else queryY(kx,yrson);
} void queryX(int kx,int xl,int xr)
{
queryY(kx,,,N);
if(xl==xr) return ;
int mid = (xl+xr)>>;
if(X1 <= mid)queryX(xlson);
else queryX(xrson);
} int main()
{
while(~scanf("%d", &X))while(X--)
{
mem(tree);
scanf("%d %d%*c", &N,&T);
for(int i=;i<T;i++)
{
scanf("%c %d %d%*c",&ch,&X1,&Y1);
if(ch == 'C')
{
scanf("%d %d%*c", &X2, &Y2);
editX(,,N);
}
else
{
num = ;
queryX(,,N);
if(num & )printf("1\n");
else printf("0\n");
}
}
if(X) printf("\n");
}
return ;
}
上一篇:javabean+servlet+jsp程序_个人辛苦探索


下一篇:mysql_常用命令