题解 | #【模板】二维差分#

【模板】二维差分

http://www.nowcoder.com/practice/50e1a93989df42efb0b1dec386fb4ccc

【模板】二维差分

难度:3星

类似二维前缀和的套路,开一个差分数组 sumsum,对于左上角 (x1,y1)(x_1,y_1) 、右下角 (x2,y2)(x_2,y_2) 的矩形所有数加上 kk ,我们只需要把 sum[x1][y1]sum[x_1][y_1] 加上 kksum[x2+1][y1]sum[x_2+1][y_1] 减去 kksum[x1][y2+1]sum[x_1][y_2+1] 减去 kksum[x2+1][y2+1]sum[x_2+1][y_2+1] 加上 kk 。在所有操作结束以后统一做二维前缀和就可以了。

#include<bits/stdc++.h>
using namespace std;
long long a[1010][1010],sum[1010][1010];
int main(){
    int n,m,q,i,j;
    cin>>n>>m>>q;
    for(i=1;i<=n;i++){
        for(j=1;j<=m;j++){
            cin>>a[i][j];
        }
    }
    while(q--){
        int x1,y1,x2,y2,k;
        cin>>x1>>y1>>x2>>y2>>k;
        sum[x2+1][y2+1]+=k;
        sum[x1][y2+1]-=k;
        sum[x2+1][y1]-=k;
        sum[x1][y1]+=k;
    }
    for(i=1;i<=n;i++){
        for(j=1;j<=m;j++){
            sum[i][j]+=sum[i-1][j];
        }
    }
    for(i=1;i<=n;i++){
        for(j=1;j<=m;j++){
            sum[i][j]+=sum[i][j-1];
            cout<<sum[i][j]+a[i][j]<<" ";
        }
        cout<<"\n";
    }
    
    
}
全部评论

相关推荐

05-30 13:04
已编辑
门头沟学院 算法工程师
智谱和米哈游都是ai大模型agent的业务钱的话还是米更多,几乎翻倍了,有没有老哥是两个公司其中一个的,能问问转正率咋样嘛,我问的hr回答都是做的好就可以转正暑期实习
码农索隆:选米哈游:短期高薪、敢承担风险、具备强创新能力,且愿押注游戏AI赛道。 选智谱:稳定性与行业通用能力积累,接受薪资差距以换取更稳妥的职业基础。
投递北京智谱华章科技等公司10个岗位 > 实习期间如何提升留用概率?
点赞 评论 收藏
分享
05-03 12:45
西南大学 Java
nsnzkv:你这项目写的内容太多了,说实话都是在给自己挖坑,就算简历过了,后面面试也难受
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务