80pts #4Wa求助!

P2367 语文成绩

Brave_woodBG @ 2024-08-07 21:32:57

#include<iostream>
#include<math.h>
#include<climits>
#define int long long 
using namespace std;
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int n,m;
    cin>>n>>m;
    int a[n];
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    int b[n];
    b[0]=a[0];
    for(int i=1;i<n;i++){
        b[i]=a[i]-a[i-1];
    }
    for(int i=0;i<m;i++){
        int l,r,z;
        cin>>l>>r>>z;
        b[l-1]+=z;
        if(r<n){
            b[r]-=z;
        }
    }
    a[0]=b[0];
    int minn=INT_MAX;
    for(int i=1;i<n;i++){
        a[i]=a[i-1]+b[i];
        minn=min(minn,a[i]);
    }
    cout<<minn;
    return 0;
}

by fanhaoxuan0110 @ 2024-08-12 14:27:28

@Brave_woodBG

我也80

#include<bits/stdc++.h>
using namespace std;
int l,r,c,a[10001000],n,m;
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    for(int i=1;i<=m;i++){
        cin>>l>>r>>c;
        for(int j=l;j<=r;j++){
            a[j]+=c;
        }
    }
    sort(a+1,a+n+1);
    cout<<a[1];
    return 0;
}

by Brave_woodBG @ 2024-08-13 22:24:54

@fanhaoxuan0110

弄好了,但不知道之前的哪里错了

#include<iostream>
#include<math.h>
#include<climits>
#include<algorithm>
#define int long long 
using namespace std;
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int n,m;
    cin>>n>>m;
    int a[n];
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    int b[n];
    b[0]=a[0];
    for(int i=1;i<n;i++){
        b[i]=a[i]-a[i-1];
    }
    for(int i=0;i<m;i++){
        int l,r,z;
        cin>>l>>r>>z;
        b[l-1]+=z;
        if(r<n){
            b[r]-=z;
        }
    }
    a[0]=b[0];
    int minn=INT_MAX;
    for(int i=1;i<n;i++){
        a[i]=a[i-1]+b[i];
    }
    sort(a,a+n);
    cout<<a[0];
    return 0;
}

by Brave_woodBG @ 2024-08-13 22:32:41

@fanhaoxuan0110

你这个时间复杂度太大了,会超时,你学下差分

链接:差分法


by fanhaoxuan0110 @ 2024-08-14 08:02:01

@Brave_woodBG 前天刚学


|