poj 2155 Matrix(二维树状数组) hdu 3584 Cube(三维)
来源:互联网 发布:rs485网络总线 编辑:程序博客网 时间:2024/06/08 15:25
这类题目国家队论文有讲过,09年的武森<浅谈信息学竞赛中的"0"与”1“>.
要知道状态只有两种,记录下改变的次数sum,再判断下sum%2便可得出(x,y)的状态。更新,不断去覆盖。如二维的这张图:
1,2,3,4,7是更新时未受影响,在第5个区域时,受(x1,y1)影响,所以会改变。在第6个区域时,受(x2+1,y1)和(x1,y1)的影响增加2,因为结果mod 2 所以未有影响。
在第8个区域时受(x1,y2+1)和(x1,y1)影响增加2,同样没有影响,在第九个区域受(x1,y1),(x1,y2+1)(x2+1,y1),(x2+1,y2+1)四个影响增加4,mod 2 仍然没影响。
在更新操作就是不断覆盖时只有第5块区域有改变..~~~
知道了这点就可以迅速水过这种题。
2155 code:
int n,m;int C[maxn][maxn];void update(int x,int y){ for(int i=x;i<=n;i+=lowbit(i)) for(int j=y;j<=n;j+=lowbit(j)) C[i][j]++;}int query(int x,int y){ int ret=0; for(int i=x;i>0;i-=lowbit(i)) for(int j=y;j>0;j-=lowbit(j)) ret+=C[i][j]; return ret;}int main(){ int t,x1,y1,x2,y2; char op[5]; cin>>t; while(t--){ cin>>n>>m; clr(C,0); while(m--){ scanf("%s%d%d",op,&x1,&y1); if(op[0]=='C'){ cin>>x2>>y2; update(x1,y1); update(x1,y2+1); update(x2+1,y1); update(x2+1,y2+1); } if(op[0]=='Q'){ int sum=query(x1,y1); puts(sum%2?"1":"0"); } } puts("");//55.a PE get. }return 0;}
3584 [code]:
int n,m;int C[maxn][maxn][maxn];void update(int x,int y,int z){ for(int i=x;i<=n;i+=lowbit(i)) for(int j=y;j<=n;j+=lowbit(j)) for(int k=z;k<=n;k+=lowbit(k)) C[i][j][k]++;}int query(int x,int y,int z){ int ret=0; for(int i=x;i>0;i-=lowbit(i)) for(int j=y;j>0;j-=lowbit(j)) for(int k=z;k>0;k-=lowbit(k)) ret+=C[i][j][k]; return ret;}int main(){ while(~scanf("%d%d",&n,&m)){ clr(C,0); int op,x1,y1,z1,x2,y2,z2; while(m--){ scanf("%d%d%d%d",&op,&x1,&y1,&z1); if(op==1){ scanf("%d%d%d",&x2,&y2,&z2); update(x1,y1,z1); update(x1,y1,z2+1); update(x1,y2+1,z1); update(x2+1,y1,z1); update(x2+1,y2+1,z1); update(x2+1,y1,z2+1); update(x1,y2+1,z2+1); update(x2+1,y2+1,z2+1); //BUG; } if(op==0){ // BUG; int sum=query(x1,y1,z1); puts(sum%2?"1":"0"); } } }return 0;}
- poj 2155 Matrix(二维树状数组) hdu 3584 Cube(三维)
- POJ 2155 Matrix ( 二维树状数组 ) || HDU 3584 Cube ( 三维树状数组 )
- HDU 3584 Cube(三维树状数组)
- 【树状数组(三维)】hdu 3584 Cube
- HDU 3584 Cube (三维树状数组)
- HDU 3584 Cube (三维树状数组)
- HDU 3584 Cube(三维树状数组)
- hdu 3584 Cube(三维树状数组)
- HDU 3584 Cube(三维树状数组)
- HDU 3584 Cube 【三维树状数组】
- hdu 3584 Cube //三维树状数组
- hdu 3584 cube #三维树状数组
- HDU 3584 Cube 三维树状数组
- HDU 3584 Cube --三维树状数组
- HDU - 3584 Cube(三维树状数组)
- HDU 3584 Cube(三维树状数组)
- HDU 3584 Cube(三维树状数组)
- 三维三维三维树状数组模板题 hdu 3584 Cube
- 土坷垃的情怀
- The package lists or status file could not be parsed or opened.
- hdu_1281
- 一个合格的程序员应该读过哪些书
- hdu_3572
- poj 2155 Matrix(二维树状数组) hdu 3584 Cube(三维)
- 七夕·殇
- hdu_4292
- servlet的一些代码
- 走不出的软件作坊——客户的需求无止境
- 程序员技术练级攻略
- hdu 1114 Piggy-Bank
- hdu_4280
- Debian安装时选择中文后进入系统出现乱码问题的解决