博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 1452 Count 【模板】二维树状数组
阅读量:5078 次
发布时间:2019-06-12

本文共 1281 字,大约阅读时间需要 4 分钟。

对每种颜色开一个二维树状数组

1 #include
2 #include
3 using namespace std; 4 const int maxn=310; 5 int t[110][maxn][maxn],c[maxn][maxn],Q,n,m,k,x,y,xx,yy,col; 6 inline void read(int &k){ 7 k=0; int f=1; char c=getchar(); 8 while(c<'0'||c>'9')c=='-'&&(f=-1),c=getchar(); 9 while('0'<=c&&c<='9')k=k*10+c-'0',c=getchar();10 k*=f;11 }12 inline void add(int col,int x,int y,int del){13 for(int i=y;i<=n;i+=i&-i)14 for(int j=x;j<=m;j+=j&-j) t[col][i][j]+=del;15 }16 inline int query(int col,int x,int y){17 int ret=0;18 for(int i=y;i;i-=i&-i)19 for(int j=x;j;j-=j&-j) ret+=t[col][i][j];20 return ret;21 }22 int main(){23 read(n); read(m); 24 for(int i=1;i<=n;i++)25 for(int j=1;j<=m;j++) read(x),c[i][j]=x,add(x,i,j,1);26 read(Q);27 while(Q--){28 read(k);29 if(k==1){30 read(x); read(y); read(col);31 add(c[x][y],x,y,-1); add(col,x,y,1); c[x][y]=col;32 }33 else{34 read(x); read(xx); read(y); read(yy); read(col);35 printf("%d\n",query(col,xx,yy)-query(col,x-1,yy)-query(col,xx,y-1)+query(col,x-1,y-1));36 }37 }38 return 0;39 }
View Code

 

转载于:https://www.cnblogs.com/DriverLao/p/7994449.html

你可能感兴趣的文章
BootStrap---2.表格和按钮
查看>>
Linear Algebra lecture 2 note
查看>>
CRC计算模型
查看>>
Ajax之404,200等查询
查看>>
Aizu - 1378 Secret of Chocolate Poles (DP)
查看>>
csv HTTP简单表服务器
查看>>
OO设计的接口分隔原则
查看>>
数据库连接字符串大全 (转载)
查看>>
java类加载和对象初始化
查看>>
对于负载均衡的理解
查看>>
django简介
查看>>
window.event在IE和Firefox的异同
查看>>
常见的js算法面试题收集,es6实现
查看>>
IO流写出到本地 D盘demoIO.txt 文本中
查看>>
Windows10 下Apache服务器搭建
查看>>
HDU 5458 Stability
查看>>
左手坐标系和右手坐标系
查看>>
solr后台操作Documents之增删改查
查看>>
http://yusi123.com/
查看>>
文件文本的操作
查看>>