您的位置:首页 > 其它

nyoj745

2016-05-04 16:24 197 查看
题解写给自己看。

题意: 略。

思路: 可以先求不成环的情况下的单链最小值和单链最大值。

AC代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
#define ll long long
using namespace std;
const int maxn=50010;
int a[maxn];

int main(){
int n;
while(scanf("%d",&n)!=EOF){
ll s=0;
for(int i=1; i<=n; i++){
scanf("%lld",&a[i]);
s+=a[i];
}
ll maxx=0;
ll fmax=-99999999999999;
ll fmin=99999999999999;
for(int i=1; i<=n; i++){
maxx+=a[i];
if(maxx>fmax) fmax=maxx;
if(maxx<0) maxx=0;
}
for(int i=1; i<=n; i++){
maxx+=a[i];
if(maxx<fmin) fmin=maxx;
if(maxx>0) maxx=0;
}
printf("%lld\n",max(fmax,(s-fmin)));
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: