P7917 题解
思路
这题需要将 个整数相邻两个进行加减运算,问最大是多少。但实际上就是在 个数字间填上加减号,求最大值。
加一个整数原数变大,减一个负数原数变小。
但算式开头默认有个加号,所以第一个数必须要加上,不管它是否是负数。
我们定义一个 ,存储 数组中最大的和,然后去遍历 数组。
如果 ,那么就将 增加 。
如果 ,那么就将 减少 。
但要注意,当 时,必须将 增加
提醒
还是那句话:十年 OI 一场空,不开 long long 见祖宗。
再提醒一句:第一个数只能加上!我在月赛过程中就因为这个 Boom 0 了无数次!
代码
#include<iostream>
using namespace std;
long long n,a[100005],s;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
if(a[i]>=0){
s+=a[i]; //正数就加
}else if(i!=1){
s-=a[i]; //负数就减
}else{
s+=a[i]; //第一个只能加上!
}
}
cout<<s<<endl;
return 0;
}