POJ 1195 Mobile Phones 二维树状数组

1 #include<iostream> 2 #include<math.h> 3 #include<string.h> 4 #include<queue> 5 #include<algorithm> 6 #include<cstdio> 7 #define rep(i,a,n) for(i=a;i<=n;i++) 8 #define per(i,a,n) for(i=n;i>=a;i--) 9 #define scd1(a) scanf("%d",&a) 10 #define scd2(a,b) scanf("%d%d",&a,&b) 11 #define ll long long 12 #define mem(a,b) memset(a,b,sizeof a); 13 using namespace std; 14 15 const int maxn=1024; 16 int T,cnt=0,N,M; 17 int mt[maxn+5][maxn+5]; 18 int ist; 19 20 int lowbit(int num){ 21 return num&(-num); 22 } 23 24 void add(int x, int y, int d){ 25 while(x<=N){ 26 int j=y; 27 while(j<=N){ 28 mt[x][j]+=d;j+=lowbit(j); 29 }x+=lowbit(x); 30 } 31 } 32 33 int sum(int x, int y){ 34 int ret=0; 35 while(x>0){ 36 int j=y; 37 while(j>0){ 38 ret+=mt[x][j];j-=lowbit(j); 39 } 40 x-=lowbit(x); 41 } 42 return ret; 43 } 44 45 int main(){ 46 while(~scd2(ist,N)){ 47 mem(mt,0); 48 while(~scd1(ist)&&ist!=3){ 49 if(ist==1){ 50 int X,Y,A; 51 scd2(X,Y);scd1(A);X++;Y++; 52 add(X,Y,A); 53 } 54 if(ist==2){ 55 int L,B,R,T; 56 scd2(L,B);scd2(R,T);L++;B++;R++;T++; 57 int tmp=sum(R,T); 58 tmp+=sum(L-1,B-1); 59 tmp-=sum(L-1,T); 60 tmp-=sum(R,B-1); 61 printf("%d\n",tmp); 62 } 63 } 64 } 65 }
题意描述: 给出一个矩阵, 每次修改一个点的值, 每次质询要求回答一个子矩阵的数值和.
还是裸的二维树状数组, 它的对偶题是POJ2155 Matrix 题解链接:http://www.cnblogs.com/LiXinze/p/7353436.html
一个人要像一支队伍 每一天要像一场战争
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!