有减于号时
假设有n个大于0从大到小的数,加减符号数为n-1:a,b,c,d,。。。。。,e
sum求最大:(max )-(min )
a - (e - ( ) -())+( ( )+( ) +( ) + 。。。。 )
当序列中有负数时:
a -((负数)+。。。-(正数)。。。)-(负数 )-(负数)。。。- e+( ( 正数)+(正数 ) +(正数 ) +。。。。 )
总结:max - min + abs(剩余各项);
#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;
}