码迷,mamicode.com
首页 > 其他好文 > 详细

p1358

时间:2018-09-02 14:34:29      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:namespace   false   lowbit   cin   stdin   ==   std   amp   turn   

这是一道二维树状数组模板题。

需要注意的可能只有这些xy有可能为零。那每次输入之后全部++,相当于全部向右下角移了一位。

那就直接给代码了呦。

using namespace std;
int c[1050][1050],n,m;
int i,f;
int a1,b1,a2,b2,tx,ty,tk;
int ans;
int lowbit(int x)
{
  return x&(-x);
}
int sum(int x,int y)
{
    ans=0;
    for(i=x;i>=1;i-=lowbit(i))
        for(f=y;f>=1;f-=lowbit(f))
            ans+=c[i][f];
    return ans;
}
void add(int x,int y,int v)
{
    for(i=x;i<=n;i+=lowbit(i))
        for(f=y;f<=n;f+=lowbit(f))
            c[i][f]+=v;
}
int main()
{
ios::sync_with_stdio(false);
//freopen("123.in","r",stdin);
//freopen("123.out","w",stdout);
    cin>>n;
    for(;;)
    {
        cin>>m;
        if(m==3)
            return 0;
        if(m==1)
        {
            cin>>tx>>ty>>tk;
            tx++;
            ty++;
            add(tx,ty,tk);
        }
        if(m==2)
        {
            cin>>a1>>b1>>a2>>b2;
            a1++;
            b1++;
            a2++;
            b2++;
            cout<<abs(sum(a2,b2)-sum(a1-1,b2)-sum(a2,b1-1)+sum(a1-1,b1-1) )<<endl;
        }
    }
}

 

p1358

标签:namespace   false   lowbit   cin   stdin   ==   std   amp   turn   

原文地址:https://www.cnblogs.com/qywyt/p/9573633.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!