首页 > 其他分享 >acwing 二维差分

acwing 二维差分

时间:2023-02-13 00:33:22浏览次数:53  
标签:x1 int 差分 x2 二维 数组 y1 y2 acwing

原题链接

image

题解

分析

  • 首先将二维a数组差分为二维b数组

  • 然后对差分数组进行操作
    image

  • 图为操作流程

    1. 所要操作的区域为红色
    2. 使红色左上角加c,导致a数组灰色区域加c
    3. 使绿色左上角减c,导致a数组绿色区域减c
    4. 使橙色左上角减c,导致a数组橙色区域减c
    5. 最后减去黑色左上角,导致a数组黑色区域减c

代码

#include "iostream"
const int N=1010;
using namespace std;
int a[N][N]={0};
int b[N][N]={0};
int main(){
    int x,y,n,x1,y1,x2,y2,c;
    cin>>x>>y>>n;
    for(int i=1;i<=x;i++)
        for(int j=1;j<=y;j++){
            scanf("%d",&a[i][j]);
            b[i][j]=a[i][j]-a[i-1][j]-a[i][j-1]+a[i-1][j-1];
        }
    for(int i=1;i<=n;i++){
        cin>>x1>>y1>>x2>>y2>>c;
        b[x1][y1]+=c;
        b[x2+1][y1]-=c;
        b[x1][y2+1]-=c;
        b[x2+1][y2+1]+=c;
    }
    for(int i=1;i<=x;i++){
        for(int j=1;j<=y;j++){
            a[i][j]=b[i][j]+a[i-1][j]+a[i][j-1]-a[i-1][j-1];
            cout<<a[i][j]<<' ';
        }
    cout<<endl;
    }
}

标签:x1,int,差分,x2,二维,数组,y1,y2,acwing
From: https://www.cnblogs.com/ChengMao/p/17115082.html

相关文章

  • acwing 差分
    原题链接题解分析使用循环进行操作时,效率是o(r-l),而使用差分,效率是o(1)差分就是前缀和的逆操作,将差分数组这里叫为b,b[l]+c,就可以使l后面所有项的值都增加,然后b[r+1]......
  • acwing 前缀和练习
    原题链接题解#include"iostream"#include"vector"usingnamespacestd;intmain(){intn,m,tmp,l,r;cin>>n>>m;vector<int>num;num.push_back......
  • 二维费用的背包问题
    #include<bits/stdc++.h>usingnamespacestd;constintN=1e3+10;intn,m1,m2;intv1[N],v2[N],w[N];intf[N][N];intmain(){cin>>n>>m1>>m2;......
  • 「AcWing学习记录」质数
    AcWing866.试除法判定质数原题链接时间复杂度\(O(\sqrt{n})\)\[d|n\implies\cfrac{n}{d}|n\]\[d\leq\cfrac{n}{d}\impliesd^2\leqn\impliesd\leq\sqrt{n}\]#inc......
  • 「AcWing学习记录」并查集
    并查集1.将两个集合合并2.询问两个元素是否在一个集合当中时间复杂度近乎O(1)基本原理每个集合用一棵树来表示。树根的编号就是整个集合的编号,每个节点存储它的父节点......
  • AcWing 第 90 场周赛 ABC
    (我又来水博客了)才五天没写题,打成这样子,会被自己气shahttps://www.acwing.com/activity/content/2870/AcWing4806.首字母大写#include<bits/stdc++.h>usingnamespa......
  • 「AcWing学习记录」背包问题
    集合划分一般需要满足不重和不漏两个条件,不漏是一定要满足的,但不重不一定任何时候都要满足。AcWing2.01背包问题原题链接有N件物品和一个容量是V的背包。每件......
  • C语言:二维数组数据保存到一维数组
    #include<stdio.h>//输人一个5行5列的二维数组,将其按行存储在一个一维数组中并输出。main(){inta[5][5],b[25],c,d,e=0;for(c=0;c<5;c++)for(d=0;d<5......
  • LeetCode全排列AcWing842. 排列数字(/dfs)
    原题解Acwing同一个题,主要参考写法题目给定一个不含重复数字的数组nums,返回其所有可能的全排列。你可以按任意顺序返回答案。约束题解classSolution{publi......
  • Codeforces Round #541 (Div. 2) D - Gourmet choice 差分约束
    观察到n+m最多才2000个点,正解也不是差分约束但是它能跑:)建图比较平凡不记述难得的是用链式前向星T了,改vector过了  T9的话是加了随机化优化,cin读入,链式前向星存边......