题解 | #打鼹鼠#

数列操作

https://ac.nowcoder.com/acm/contest/965/A

打鼹鼠

二维前缀和 + 树状数组(二维)

Code

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

const int N = 5000;

ll tr[N][N];
int n,m;

int lowbit(int x){
    return x & -x;
}

void add(int x,int y,int v){
    for(int i=x;i<=n;i+=lowbit(i)) for(int j=y;j<=m;j+=lowbit(j)) tr[i][j]+=v;
}

ll sum(int x,int y){
    ll res=0;
    for(int i=x;i;i-=lowbit(i)) for(int j=y;j;j-=lowbit(j)) res+=tr[i][j];
    return res;
}

ll query(int a,int b,int c,int d){
    return sum(c,d)-sum(a-1,d)-sum(c,b-1)+sum(a-1,b-1);
}

int main(){
    scanf("%d%d",&n,&m);
    int op;
    while(scanf("%d",&op)!=EOF){
        if(op==1){
            int x,y,k;
            scanf("%d%d%d",&x,&y,&k); 
            add(x,y,k);
        }
        else{
            int a,b,c,d;
            scanf("%d%d%d%d",&a,&b,&c,&d);
            printf("%lld\n",query(a,b,c,d));
        }
    }

    return 0;
}
全部评论

相关推荐

06-12 17:46
门头沟学院 Java
运营你豪哥:来说重点: ​1.项目前置,时间倒序。​​ 2.​项目描述强化结果与量化效果(STAR原则里的R)。​​ ​3.个人技能精炼,明确掌握程度,突出核心。​​ ​4.增加强有力开头的个人总结部分。​​ 5.​优化教育背景(成绩排名)、合并奖项与活动。​​
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
nus2201602...:兄弟,你这个简历撕了丢了吧,就是一坨,去找几个项目,理解项目流程,看几遍就是你的了,看看八股就去干了,多看看牛客里别人发出来的简历,对着写,你这写的啥啊,纯一坨
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 11:29
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务