1 solutions

  • 0
    @ 2025-3-3 16:24:08

    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

    Information

    ID
    10004
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By