有减于号时
假设有n个大于0从大到小的数,加减符号数为n-1:a,b,c,d,。。。。。,e
sum求最大:(max )-(min )
a - (e - ( ) -())+( ( )+( ) +( ) + 。。。。 )
当序列中有负数时:
a -((负数)+。。。-(正数)。。。)-(负数 )-(负数)。。。- e+( ( 正数)+(正数 ) +(正数 ) +。。。。 )
总结:max - min + abs(剩余各项);
cpp
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;
const int MAXN = 1e6;
LL a[MAXN];
int main() {
int n,m, k;
LL sum = 0;
cin >> n >> m;
k = m + n + 1;
for (int i = 1; i <= k;i++) {
cin >> a[i];
}
if (m == 0) {
for (int i = 0; i <= k;i++) {
sum += a[i];
}
cout << sum;
return 0;
}
else {
sort(a + 1, a + k + 1);
sum += a[k];
sum -= a[1];
for (int i = 2; i < k;i++) {
sum += abs(a[i]);
}
cout << sum;
return 0;
}
return 0;
}