ACM入门之差分

Posted 辉小歌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ACM入门之差分相关的知识,希望对你有一定的参考价值。


简言之:差分可以O(1)的给一段区间或矩阵加减相等的值

差分的分类:

  • 一维差分
  • 二维差分
  • 树上差分
    • 点差分
    • 边差分

一维差分模板:

const int N=1e5+10;
int s[N];
void add(int l,int r,int c)s[l]+=c,s[r+1]-=c;
void init()for(int i=1;i<=n;i++) s[i]+=s[i-1];

一维差分习题

二维差分模板:

const int N=1010;
int s[N][N],n,m;
void add(int x,int y,int xx,int yy,int c)

    s[x][y]+=c;
    s[x][yy+1]-=c;
    s[xx+1][y]-=c;
    s[xx+1][yy+1]+=c;

void init(int n,int m)

    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++) 
            s[i][j]+=s[i-1][j]+s[i][j-1]-s[i-1][j-1];

二维差分习题

以上是关于ACM入门之差分的主要内容,如果未能解决你的问题,请参考以下文章

ACM入门之搜索

ACM入门之二分

蓝桥训练之前缀和与差分

ACM入门之欧拉序列

ACM入门之欧拉序列

ACM入门之ST表/RMQ