poj 1656(二维树状数组解法)
来源:互联网 发布:淘宝助理 图片搬家 编辑:程序博客网 时间:2024/05/21 09:38
题目信息:count black
利用二维树状数组:
//利用二维树状数组 #include<iostream>#include<string>#include<cstring>using namespace std;int c[101][101];int b[101][101];int Row,Col;//下面三个函数是基本套路 inline int Lowbit(const int &x){ return x&(-x);}int Sum(int i,int j){//计算(1,1)--(i,j)之间的和 int tempj,sum=0;while(i > 0){tempj=j;while(tempj > 0){ sum+=c[i][tempj];tempj-=Lowbit(tempj);}i-=Lowbit(i);}return sum;}void Update(int i,int j,int num){//更新(i,j) 为c[i][j]+num int tempj;while(i<=Row){ tempj=j;while(tempj<=Col){ c[i][tempj]+=num;tempj+=Lowbit(tempj);}i+=Lowbit(i);}}void whiteUpdate(int x,int y,int L){ for(int i=x;i<x+L;++i)for(int j=y;j<y+L;++j){ if(b[i][j]==1) {b[i][j]=0;Update(i,j,-1);}else continue;}}void blackUpdate(int x,int y,int L){ for(int i=x;i<x+L;++i)for(int j=y;j<y+L;++j){ if(b[i][j]==1) continue;else {b[i][j]=1;Update(i,j,1);};}}int blackSum(int x,int y,int L){//计算(x,y)--(x+L-1,Y+L-1)之间的数 return Sum(x+L-1,y+L-1)+Sum(x-1,y-1)-Sum(x-1,y+L-1)-Sum(x+L-1,y-1); }int main(){ int x,y,L,N;string str;Row=Col=100;memset(c,0,sizeof(c));memset(b,0,sizeof(b));cin>>N;while(N--){ cin>>str>>x>>y>>L;switch(str[0]){ case 'W':whiteUpdate(x,y,L);break;case 'B':blackUpdate(x,y,L);break;case 'T':cout<<blackSum(x,y,L)<<endl;break;default: break;}}return 0;}
- poj 1656(二维树状数组解法)
- POJ 1656 二维树状数组
- POJ 1656 二维树状数组简单应用
- poj 3468 树状数组解法
- poj 3468 树状数组解法
- poj 2155 Matrix(二维树状数组)
- poj 2155(二维树状数组)
- poj 2155 (二维树状数组)
- POJ 2155 Matrix (二维树状数组)
- POJ 2155 Matrix(二维树状数组)
- 【树状数组(二维)】poj 2155 Matrix
- POJ 2155 Matrix (二维树状数组)
- [poj 2155] Matrix(二维树状数组)
- POJ 2155 Matrix (二维树状数组)
- POJ-2155(二维树状数组)
- POJ 1990 MooFest(二维树状数组)
- POJ 2155 Matrix(二维树状数组)
- POJ Matrix ( 二维树状数组)
- poj 1160Post Office
- poj1050 to the max
- 删除Android自带的系统软件注意事项
- tt
- 二分图匹配(匈牙利算法DFS实现)
- poj 1656(二维树状数组解法)
- poj1159 palindrome(动态规划+滚动数组)
- poj Alice's Chance(最大流解题)
- 有向图强连通分量的Tarjan算法
- 背包九讲(转载)
- 开机提示:error:no such partition grub rescue>
- ubuntu12.04安装jdk7
- 线程通信,生产者消费者问题(Java)
- java匿名类关闭窗口