1 条题解

  • 0
    @ 2025-4-27 19:23:29

    C++ :

    #include<bits/stdc++.h>
    using namespace std;
    
    const int N = 100010;
    int n,m;
    //a:原数组,b:差分数组 
    int a[N],b[N];
    
    //在[l,r]之间插入c 
    void insert(int l,int r,int c){
    	b[l] += c;
    	b[r+1] -= c;
    }
    
    int main(){
    	cin>>n>>m;
    	for(int i = 1;i <= n;i++){
    		cin>>a[i];
    	} 
    	
    	//插入:相当于假定a数组是空的,元素是通过插入形成的 
    	for(int i = 1;i <= n;i++){
    		insert(i,i,a[i]);
    	} 
    	
    	//做m次+c的操作
    	int l,r,c;
    	for(int i = 1;i <= m;i++){
    		cin>>l>>r>>c; 
    		insert(l,r,c);
    	} 
    	
    	//求原数组,相当于求b数组的前缀和
    	for(int i = 1;i <= n;i++){
    		b[i] += b[i-1];
    	} 
    	
    	//输出
    	for(int i = 1;i <= n;i++){
    		cout<<b[i]<<" ";
    	} 
        return 0;
    }
    
    
    • 1

    信息

    ID
    1558
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者