这道题难道不是动态规划求最大子段和吗??
而且我样例明明过了啊???
交上去之后全是一堆黑黑的方块,点一下还会出来一大串英文,我看不懂啊!!
#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