差分

差分是前缀和的逆运算

一维数组 diff[i] 记录了 a[i]a[i1]
对于区间[l,r]同时加w

Diff[1]+=w

差分

看一道例题:

差分例题

Code:

#include<iostream>
using namespace std;
const int N = 1e7 + 10;
int q[N], s[N];
void insert( int l , int r , int c ){
	s[l] += c;
	s[ r + 1] -= c;
}
int main(){
	int n , m ; 
	cin>> n >> m;
	for( int i = 1 ; i <= n ; i++ ){
		cin >>q[i];
		insert( i , i , q[i] );
	}
	while( m-- ){
		int l , r , c;
		scanf("%d%d%d" , &l , &r , &c);
		insert( l , r , c );
	}
	for( int i = 1 ; i <= n ; i++ ) s[i] += s[i - 1]; //差分后进行累加
	for( int i = 1 ; i <= n ; i++ ) cout<<s[i]<<" ";
}

posted @   To_Carpe_Diem  阅读(45)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示