【算法| 差分 No.1】AcWing 797. 差分 & AcWing 798. 差分矩阵

个人主页:兜里有颗棉花糖

欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创

收录于专栏【手撕算法系列专栏

🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望对大家有所帮助

🍓希望我们一起努力、成长,共同进步。

目录

  • [一、AcWing 797. 差分](#一、AcWing 797. 差分)
  • [二、AcWing 798. 差分矩阵](#二、AcWing 798. 差分矩阵)

一、AcWing 797. 差分

原题链接:点击直接跳转到该题目

关键代码:

  • b[l] += c;
  • b[r + 1] -= c;

解题代码

cpp 复制代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>

using namespace std;

const int N = 1e5 + 10;
int nums[N];
int b[N];

void insert(int l,int r,int c)
{
    b[l] += c;
    b[r + 1] -= c;
}
int main()
{
    int n,m;
    cin >> n >> m;
    for(int i = 1;i <= n;i++) cin >> nums[i];
    while(m--)
    {
        int l,r,c;
        cin >> l >> r >> c;
        insert(l,r,c);
    }
    for(int i = 2;i <= n;i++) b[i] = b[i] + b[i - 1];
    for(int i = 1;i <= n;i++) nums[i] = nums[i] + b[i];
    for(int i = 1;i <= n;i++) printf("%d ",nums[i]);
    return 0;
}

二、AcWing 798. 差分矩阵

原题链接:点击直接跳转到该题目

代码关键:

  • b[x1][y1] += c;
  • b[x2 + 1][y1] -= c;
  • b[x1][y2 + 1] -= c;
  • b[x2 + 1][y2 + 1] += c;

解题代码

cpp 复制代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>

using namespace std;

const int N = 1010;
int nums[N][N];
int b[N][N];

void insert(int x1,int y1,int x2,int y2,int c)
{
    b[x1][y1] += c;
    b[x1][y2 + 1] -= c;
    b[x2 + 1][y1] -= c;
    b[x2 + 1][y2 + 1] += c;
}

int main()
{
    int n,m,q;
    cin >> n >> m >> q;
    for(int i = 1;i <= n;i++)
        for(int j = 1;j <= m;j++)
            cin >> nums[i][j];
    while(q--)
    {
        int x1,y1,x2,y2,c;
        cin >> x1 >> y1 >> x2 >> y2 >> c;
        insert(x1,y1,x2,y2,c);
    }
    for(int i = 1;i <= n;i++)
        for(int j = 1;j <= m;j++)
        {
            b[i][j] = b[i - 1][j] + b[i][j - 1] + b[i][j] - b[i - 1][j - 1];
            nums[i][j] += b[i][j];
        }
    
    // 打印最终数组
    for(int i = 1;i <= n;i++)
    {
        for(int j = 1;j <= m;j++)
        {
            printf("%d ",nums[i][j]);
        }
        printf("\n");
    }
    return 0;
}
相关推荐
code小毛孩10 分钟前
leetcode hot100数组:缺失的第一个正数
数据结构·算法·leetcode
legendary_bruce6 小时前
【22-决策树】
算法·决策树·机器学习
max5006008 小时前
基于桥梁三维模型的无人机检测路径规划系统设计与实现
前端·javascript·python·算法·无人机·easyui
快去睡觉~10 小时前
力扣400:第N位数字
数据结构·算法·leetcode
qqxhb11 小时前
零基础数据结构与算法——第七章:算法实践与工程应用-搜索引擎
算法·搜索引擎·tf-idf·倒排索引·pagerank·算法库
gzzeason11 小时前
LeetCode Hot100:递归穿透值传递问题
算法·leetcode·职场和发展
汤永红11 小时前
week1-[循环嵌套]画正方形
数据结构·c++·算法
pusue_the_sun12 小时前
数据结构——顺序表&&单链表oj详解
c语言·数据结构·算法·链表·顺序表
yi.Ist13 小时前
图论——Djikstra最短路
数据结构·学习·算法·图论·好难
数据爬坡ing13 小时前
过程设计工具深度解析-软件工程之详细设计(补充篇)
大数据·数据结构·算法·apache·软件工程·软件构建·设计语言