C++
$\color{#cc33ff}{— > 算法基础课题解}$
$\color{gold}{— > 蓝桥杯辅导课题解}$
思路:
$差分$
$差分:前缀和的逆运算$
$\color{#ff00ff}{图解分析:}$
#include<iostream>
using namespace std;
const int N = 1e5 + 10;
int n, m;
int a[N], b[N]; //a是原数组,b是差分数组
void insert(int l, int r, int c){ // 插入函数
b[l] += c;
b[r + 1] -= c;
}
int main(){
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i ++) scanf("%d", &a[i]);
for (int i = 1; i <= n; i ++) insert(i, i, a[i]); //将原数组的n个数先插入(差分数组)进去
while(m --){
int l, r, c;
scanf("%d%d%d", &l, &r, &c);
insert(l, r, c);
}
for(int i = 1; i <= n; i ++) b[i] +=b[i - 1]; //让b数组变为自己的前缀和
for(int i = 1; i <= n; i ++) printf("%d ", b[i]); // 输出
return 0;
}
orz