字首和 與 差分

2021-10-09 22:15:25 字數 1740 閱讀 4400

定義字首陣列s[ ]

一維情況下:s[i]=a[1]+a[2]+…+a[i]

二維情況下:s[i][j]=以i,j為邊界,左上方矩形內數的和

作用:對區間中數的和進行快速訪問

字首和

#include

using

namespace std;

const

int n =

1e5+10;

int x[n]

, s[n]

;int

main()

while

(m--

)system

("pause");

return0;

}

子矩陣的和

#include

using

namespace std;

const

int n =

1010

;int x[n]

[n], s[n]

[n];

intmain()

return0;

}

定義差分陣列b

在一維情況下:a[i]=b[1]+b[2]+…+b[i]

即是令b[1]=a[1],b[2]=a[2]-a[1]…

在二維情況下:差分陣列的字首和等於原陣列

作用:對乙個區間快速加減乙個數

#include

using

namespace std;

const

int n =

100010

;int m, n;

int a[n]

, b[n]

;void

insert

(int l,

int r,

int c)

;int

main()

while

(m--

)for

(int i =

1; i <= n; i++

)system

("pause");

return0;

}void

insert

(int l,

int r,

int c)

#include

using

namespace std;

const

int n =

1010

;int m, n, q;

int a[n]

[n], b[n]

[n];

void

insert

(int x1,

int y1,

int x2,

int y2,

int c)

;int

main()

while

(q--

)for

(int i =

1; i <= n; i++

)printf

("\n");

}system

("pause");

return0;

}void

insert

(int x1,

int y1,

int x2,

int y2,

int c)

字首和與差分

數列的字首和 sum i 表示a 1 a i 的和 用處1 求i j的和sum j sum i 1 用處2 區間修改。設定乙個change陣列。當區間 i,j 上要加k時,我們令change i k,令change j 1 k。如果我們對change陣列求字首和的話,字首和sum change i ...

字首和與差分

從陣列第乙個開始累加 s i s i 1 a i 求區間 l,r 的和,o 1 複雜度sum s r s l 1 遞推s i j s i j s i 1 j s i j 1 s i 1 j 1 例題 雷射炸彈一種新型的雷射炸彈,可以摧毀乙個邊長為r的正方形內的所有的目標。現在地圖上有n n 1000...

字首和與差分

例題入口 include const int n 320 int a n n a i 1 a i 0 1.對a 求出平方數 將其值置為1 不是平方數就是0 2.對a求乙個字首和 3.對 a,b 求乙個部分和 int sum n n void init for int i 1 i 100000 i i...