传送门
就是一个二维树状数组单点修改+区间查询的模板题,代码特别好实现,可以来练练手。
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int trash,n,tree[1050][1050]; inline int lowbit(int x) { return x&(-x); } inline void update(int x,int y,int delta) { for(int i=x;i<=n;i+=lowbit(i)) { for(int j=y;j<=n;j+=lowbit(j)) { tree[i][j]+=delta; } } } inline int query(int x,int y) { int sum=0; for(int i=x;i>0;i-=lowbit(i)) { for(int j=y;j>0;j-=lowbit(j)) { sum+=tree[i][j]; } } return sum; } int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); while(cin>>trash>>n) { memset(tree,0,sizeof(tree)); while(1) { int opt,a,b,c,d,k; cin>>opt; if(opt==3) break; if(opt==1) //单点修改 { cin>>a>>b>>k; update(a+1,b+1,k); } if(opt==2) { cin>>a>>b>>c>>d; a++,b++,c++,d++; cout<<query(c,d)-query(c,b-1)-query(a-1,d)+query(a-1,b-1)<<'\n'; } } } return 0; }转载于:https://www.cnblogs.com/Patrickpwq/articles/9427723.html
相关资源:各显卡算力对照表!