【树状数组】[CQBZOJ2719]上帝造题的七分钟I
来源:互联网 发布:购买 隐私数据 判刑 编辑:程序博客网 时间:2024/04/29 08:48
输入
输入数据的第一行为X n m,代表矩阵大小为n×m。
从输入数据的第二行开始到文件尾的每一行会出现以下两种操作:
L a b c d delta —— 代表将(a,b),(c,d)为顶点的矩形区域内的所有数字加上delta。
K a b c d —— 代表求(a,b),(c,d)为顶点的矩形区域内所有数字的和。
请注意,k为小写。
对于10%的数据,1 ≤ n ≤ 16, 1 ≤ m ≤ 16, 操作不超过200个.
对于60%的数据,1 ≤ n ≤ 512, 1 ≤ m ≤ 512.
对于100%的数据,1 ≤ n ≤ 2048, 1 ≤ m ≤ 2048, 1 ≤ delta ≤ 500,操作不超过200000个,保证运算过程中及最终结果均不超过32位带符号整数类型的表示范围。
输出
针对每个K操作,在单独的一行输出答案。
二维树状数组区间修改、查询裸题。
#include<cstdio>#define MAXN 2048int n,m,c[MAXN+10][MAXN+10],ci[MAXN+10][MAXN+10],cj[MAXN+10][MAXN+10],cij[MAXN+10][MAXN+10];void Read(int &x){ char c; while(c=getchar(),c!=EOF) if(c>='0'&&c<='9'){ x=c-'0'; while(c=getchar(),c>='0'&&c<='9') x=x*10+c-'0'; ungetc(c,stdin); return; }}inline int lowbit(int x){ return x&-x;}void update(int x,int y,int d,int c[][MAXN+10]){ int j; for(;x<=n;x+=lowbit(x)) for(j=y;j<=m;j+=lowbit(j)) c[x][j]+=d;}int getsum(int x,int y,int c[][MAXN+10]){ int j,ret=0; for(;x;x-=lowbit(x)) for(j=y;j;j-=lowbit(j)) ret+=c[x][j]; return ret;}int main(){ char cc; int x1,x2,y1,y2,d; scanf("%s",&cc); Read(n),Read(m); while(scanf("%s",&cc)!=EOF){ if(cc=='L'){ Read(x1),Read(y1),Read(x2),Read(y2),Read(d); update(x1,y1,d,c); update(x1,y1,d*x1,ci); update(x1,y1,d*y1,cj); update(x1,y1,d*x1*y1,cij); update(x1,y2+1,-d,c); update(x1,y2+1,-d*x1,ci); update(x1,y2+1,-d*(y2+1),cj); update(x1,y2+1,-d*x1*(y2+1),cij); update(x2+1,y1,-d,c); update(x2+1,y1,-d*(x2+1),ci); update(x2+1,y1,-d*y1,cj); update(x2+1,y1,-d*(x2+1)*y1,cij); update(x2+1,y2+1,d,c); update(x2+1,y2+1,d*(x2+1),ci); update(x2+1,y2+1,d*(y2+1),cj); update(x2+1,y2+1,d*(x2+1)*(y2+1),cij); } else{ Read(x1),Read(y1),Read(x2),Read(y2); int a1,a2,a3,a4; a1=getsum(x2,y2,c)*(y2+1)*(x2+1)-getsum(x2,y2,ci)*(y2+1)-getsum(x2,y2,cj)*(x2+1)+getsum(x2,y2,cij); a2=getsum(x1-1,y2,c)*x1*(y2+1)-getsum(x1-1,y2,ci)*(y2+1)-getsum(x1-1,y2,cj)*x1+getsum(x1-1,y2,cij); a3=getsum(x2,y1-1,c)*(x2+1)*y1-getsum(x2,y1-1,ci)*y1-getsum(x2,y1-1,cj)*(x2+1)+getsum(x2,y1-1,cij); a4=getsum(x1-1,y1-1,c)*x1*y1-getsum(x1-1,y1-1,ci)*y1-getsum(x1-1,y1-1,cj)*x1+getsum(x1-1,y1-1,cij); printf("%d\n",a1-a2-a3+a4); } }}
1 0
- 【树状数组】[CQBZOJ2719]上帝造题的七分钟I
- bzoj3132上帝造题的七分钟 二维树状数组
- BZOJ3132 上帝造题的七分钟 【二维树状数组】
- BZOJ 3132(上帝造题的七分钟-树状数组求和+2D逆求和数组)
- 二维树状数组的区间加减及查询 tyvj 1716 上帝造题的七分钟
- BZOJ 3038 上帝造题的七分钟2 树状数组+并查集
- BZOJ 3038 上帝造题的七分钟2 树状数组+并查集
- BZOJ 3132 上帝造题的七分钟 [tyvj 1716](关于树状数组)
- CodeVS2492 上帝造题的七分钟2(树状数组+并查集)
- 3132: 上帝造题的七分钟 树状数组 二维区间加减+查询
- TYVJ 1941 BZOJ3038 上帝造题的七分钟2 并查集+树状数组
- 二维树状数组上帝造题的七分钟(tyvj1716)
- BZOJ 3132: 上帝造题的七分钟【树状数组(二维区间加,区间查询
- 【BZOJ 3132】上帝造题的七分钟【二维树状数组】
- [BZOJ3038]上帝造题的七分钟2 树状数组+并查集
- 【BZOJ3132】【TYVJ1716】上帝造题的七分钟 二维树状数组
- 【bzoj 3132】上帝造题的七分钟(二维树状数组)
- [TYVJ P1716/BZOJ 3132 上帝造题的七分钟] 二维树状数组区间修改、区间查询
- grade web的构建约定 convention
- listView的下拉刷新
- javac 编译过程
- Android UI设计
- MySQL DBA面试全揭秘
- 【树状数组】[CQBZOJ2719]上帝造题的七分钟I
- HashMap
- JQUERY 动态删除LI
- CUDA 类型转化
- js 提交http请求的2种方式
- Verifying 000xxxxx ( 0%) Verify failed between address 0xxxxxx and 0xxxxxx Leaving target processor
- 清空沙盒中的缓存
- ListView与CheckBox混用焦点的问题
- Android APK反编译就这么简单 详解(附图)