【二维树状数组】HDU 1892
来源:互联网 发布:mac铁锈红 编辑:程序博客网 时间:2024/06/11 05:49
注意树状数组的初始化,c[i][j] = lowbit(i)*lowbit(j)与add(i,j,1)等价!
因为树状数组的lowbit作用是提取出x的最低位1.
#define N 1100int c[N][N];int g[N][N];int lowbit(int x){ return x&(-x);}void add(int i,int j,int x){ int tmp; while(i<N){ tmp = j; while(tmp<N){ c[i][tmp]+=x; tmp+=lowbit(tmp); } i+=lowbit(i); }}int sum(int i,int j){ int ans=0; int tmp; while(i>0){ tmp = j; while(tmp>0){ ans+=c[i][tmp]; tmp-=lowbit(tmp); } i-=lowbit(i); } return ans;}int main(){ int t; scanf("%d",&t); int ca=1; while(t--){ int n; scanf("%d",&n); int i,j; for(i=1;i<N;i++){ for(j=1;j<N;j++){ g[i][j] = 1; c[i][j] = lowbit(i)*lowbit(j);//add(i,j,1); } } printf("Case %d:\n",ca++); while(n--){ //0<=x1,y1,x2,y2<=1000 char str[3]; scanf("%s",str); if(str[0] == 'S'){ int x1,y1,x2,y2; scanf("%d%d%d%d",&x1,&y1,&x2,&y2); int x,xx,y,yy; x = min(x1,x2),xx = max(x1,x2); x++,xx++; y = min(y1,y2),yy = max(y1,y2); y++,yy++; int ans = sum(xx,yy)-sum(xx,y-1)-sum(x-1,yy)+sum(x-1,y-1); printf("%d\n",ans); } else if(str[0] == 'A'){ int x,y,a; scanf("%d%d%d",&x,&y,&a); x++,y++; add(x,y,a); g[x][y]+=a; } else if(str[0] == 'D'){ int x,y,a; scanf("%d%d%d",&x,&y,&a); x++,y++; if(a>g[x][y])a = g[x][y]; add(x,y,-a); g[x][y]-=a; } else if(str[0] == 'M'){ int x1 ,y1, x2, y2, n1; scanf("%d%d%d%d%d",&x1,&y1,&x2,&y2,&n1); x1++,y1++; x2++,y2++; if(g[x1][y1]<n1){ n1 = g[x1][y1]; } add(x1,y1,-n1); add(x2,y2,n1); g[x1][y1] -= n1; g[x2][y2] += n1; } } } return 0;}
- 二维树状数组 hdu 1892
- 【二维树状数组】HDU 1892
- HDU 1892 二维树状数组
- HDU 1892 二维树状数组
- HDU 1892 (二维树状数组)
- HDU 1892 二维树状数组
- hdu 1892 二维树状数组
- HDU 1892 二维树状数组
- hdu 1892 二维树状数组
- hdu 1892 树状数组,二维
- HDU 1892(树状数组二维)
- hdu 1892(二维树状数组模板)
- HDU 1892 See you~ 二维树状数组
- hdu 1892 see you ~(二维树状数组)
- hdu 1892 树状数组二维 水
- hdu-1892-See you~ 二维树状数组
- hdu 1892 See you~(二维树状数组)
- 二维树状数组 hdu 1892 See you~
- BroadcastReceiver怎么使用
- JavaScript 图书翻页效果 - 20Things_PageFlip_Example
- Extjs的Window在IE6中滚动条失效,表单太大 当出现滚动条 时候会出现window和form错位
- oracle认证书籍
- "天才"排序算法:Sleepsort
- 【二维树状数组】HDU 1892
- 动态规划——HDOJ 1087
- POJ 2154 Color 【polya+dfs】
- 辞去斯坦福大学终身教职,创立Udacity线上大学,或将改变未来获得教育与知识的方式
- Eclipse安装tomcat
- 如何使用jsp+mysql创建留言本
- 鸟哥的 Linux 与 ADSL 私房菜 大陆版
- 01背包、完全背包、多重背包详解
- stty erase 使用方法