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入门之差分的主要内容,如果未能解决你的问题,请参考以下文章