欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

差分

程序员文章站 2022-07-12 17:50:54
...

思路

差分就是求前缀和的逆运算,就是bn=an-a(n-1),a是b的前缀和,这样处理是为了我们更好的处理在i~j个区间内对每一个a都加c的操作,利用b[i]+c,b[j+1]-c的操作来实现以上的要求,不懂的举个例子就知道了。

代码

#include <stdio.h>
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <vector>
using namespace std;
const int N = 100010;

int b[N];

int main() {
	int n, m;
	cin >> n >> m;
	int t=0;//用t来存上一个a
	for (int i = 1; i <= n; i++) {//求出b
		int x;
		cin >> x;
		b[i] = x - t;
		t = x;
	}
	for (int i = 1; i <= m; i++) {//处理b
		int begin,end,x;
		cin >> begin >> end >> x;
		b[begin] += x;
		b[end + 1] -= x;
	}
	t = 0;
	for (int i = 1; i <= n; i++) {//对b求和以求出a
		t += b[i];
		cout << t << " ";
	}
}**

上一篇: 差分

下一篇: 差分