为什么我的程序报错了啊???
查看原帖
为什么我的程序报错了啊???
307453
云浅知处はなび楼主2021/4/1 22:25

这道题难道不是动态规划求最大子段和吗??

而且我样例明明过了啊???

交上去之后全是一堆黑黑的方块,点一下还会出来一大串英文,我看不懂啊!!

#include<cstdio>
#include<algorithm>
#include<iostream>

using namespace std;

int a[100005];
int n,m;
int dp[100005];

int zuidaziduanhe(int l,int r){
    int ans=-114514;
    memset(dp,0,sizeof(dp));
    for(int i=l;i<=r;i++){
        dp[i]=max(dp[i-1]+a[i],a[i]);
        ans=max(dp[i],ans);
    }
    return max(ans,0);
}

void qujianjia(int l,int r,int k){
    for(int i=l;i<=r;i++)a[i]+=k;
}

int main(){

    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);

    cin>>n>>m;
    for(int i=1;i<=n;i++)cin>>a[i];

    while(m--){
        int opt,l,r,k;
        cin>>opt>>l>>r;
        if(opt==1){
            cin>>k;
            qujianjia(l,r,k);
        }
        else cout<<zuidaziduanhe(l,r)<<endl;
    }

    return 0;
}

求助!!1

2021/4/1 22:25
加载中...