解题思路:
很多人提交这题都错了,相信还不知道为什么,大部分人是排序后减小的,加大的;
错就除了如果只要有一个负号,负数也可以全部变成正数然后相加的,不理解看接下来我举得例子
2 2
-1 -2 -3 -4 - 5
我们可以写成-1-((-2)+(-3)+(-4))-(-5)
是不是只要一个负号就可以得除最大值,懂了没有;如果按大部分人的思路的话,这题
会这么运算-1-(-5)-(-4)+(-2)+(-3);
所以这题解分为两种情况,
1.无负号,就把输入的数全加起来
2.有负号
除了上述说的,还有一种情况,即使都数字大部分都是正数,但是因为负负得正,两个负号也可以变成正号,奇数个负号只用减一次即可,:有加号有负号,无论你怎么输入,我们都可以拿最大值减去最小值然后加上剩下数的绝对值即可,为什么呢?负负得正是关键点
细看点击链接 http://t.csdn.cn/oDhUB
参考代码:
#includeusing namespace std; #define ll long long int a[200009]; int main() { int n, m; cin >> n >> m; int N = n + m + 1; ll sum = 0; for (int i = 0; i < N; i++) cin >> a[i]; //当没有减号的时候直接相加 if (m == 0) { for (int i = 0; i < n + m + 1; i++) { sum += a[i]; } } else { sort(a, a + N); sum = a[N - 1] - a[0]; for (int i = 1; i < N - 1; i++) sum += abs(a[i]); }cout << sum << endl; return 0; }
0.0分
9 人评分
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:711 |
C语言程序设计教程(第三版)课后习题7.2 (Java代码)浏览:694 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:511 |
P1002 (C语言代码)浏览:1019 |
WU-图形输出 (C++代码)浏览:836 |
WU-陶陶摘苹果2 (C++代码)浏览:1018 |
1011题解浏览:819 |
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:676 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:841 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:611 |
1024 2023-01-14 18:15:13 |
4+3-(1-2)=8