博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Luogu P4054 [JSOI2009]计数问题(二维树状数组)
阅读量:5214 次
发布时间:2019-06-14

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

#include
#include
#include
using namespace std;int n,m,q,tree[105][305][305],color[305][305];inline int lowbit(int x){return x&(-x);}inline void add(int color,int x,int y,int add){ for(int i=x;i<=n;i+=lowbit(i)){ for(int j=y;j<=m;j+=lowbit(j)){ tree[color][i][j]+=add; } }}inline int query(int color,int x,int y){ int ans=0; for(int i=x;i;i-=lowbit(i)){ for(int j=y;j;j-=lowbit(j)){ ans+=tree[color][i][j]; } } return ans;}int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ scanf("%d",&color[i][j]); add(color[i][j],i,j,1); } } scanf("%d",&q); while(q--){ int opt; scanf("%d",&opt); if(opt==1){ int x,y,c; scanf("%d%d%d",&x,&y,&c); add(color[x][y],x,y,-1); color[x][y]=c; add(color[x][y],x,y,1); } else if(opt==2){ int x1,x2,y1,y2,c; scanf("%d%d%d%d%d",&x1,&x2,&y1,&y2,&c); printf("%d\n",query(c,x2,y2)-query(c,x2,y1-1)-query(c,x1-1,y2)+query(c,x1-1,y1-1)); //注意x1,y1要减一 } }}

转载于:https://www.cnblogs.com/Y15BeTa/p/11318969.html

你可能感兴趣的文章
JVM--标记-清除算法Mark-Sweep
查看>>
poj 1741 树的分治
查看>>
java native
查看>>
三层数据库设计注意事项
查看>>
TFile
查看>>
设计模式之装饰模式(Decorator)摘录
查看>>
Idea 13 新建maven项目
查看>>
传智播客JDBC视频教程
查看>>
Android 进程常驻(5)----开机广播的简单守护以及总结
查看>>
大话设计模式C++版——工厂方法模式
查看>>
散列函数之双重散列算法解决冲突问题
查看>>
codevs 1191 数轴染色
查看>>
转:ServletContext,ActionContext,ServletActionContext
查看>>
Intellij Idea免费激活方法(转)
查看>>
intellij idea 修改背景保护色&&修改字体&&快捷键大全(转)
查看>>
软件工程学习进度表
查看>>
Count on a tree SPOJ - COT (主席树,LCA)
查看>>
putty可以远程连接linux,但上不了网(nat模式)
查看>>
CSS的工作原理(样式重复的标签,浏览器到底会选择哪个样式??)
查看>>
bzoj1801: [Ahoi2009]chess 中国象棋
查看>>