1 条题解

  • 0
    @ 2025-10-10 19:52:13

    C++ :

    #include<bits/stdc++.h>
    using namespace std;
    
    const int N = 500010;
    int a[N],b[N];//a原数组,b差分数组 
    int n,p;
    
    void insert(int l,int r,int v){
    	b[l] = b[l] + v;
    	b[r+1] = b[r+1] - v; 
    }
    
    int main() {
    	cin>>n>>p;
    	for(int i = 1;i <= n;i++) scanf("%d",&a[i]);
    	
    	//求a数组的差分数组 
    	for(int i = 1;i <= n;i++) insert(i,i,a[i]);
    	
    	//p次加分
    	int l,r,v;
    	for(int i = 1;i <= p;i++){
    		scanf("%d%d%d",&l,&r,&v);
    		insert(l,r,v);
    	} 
    	
    	//求每个人的分数
    	int mi = INT_MAX;
    	for(int i = 1;i <= n;i++){
    		b[i] = b[i] + b[i-1];
    		mi = min(mi,b[i]);
    	} 
    	cout<<mi;
    	return 0;
    }
    
    • 1

    信息

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