题解 | #J Tokitsukaze and Sum of MxAb#2023牛客寒假算法基础集训营2

Tokitsukaze and a+b=n (easy)

https://ac.nowcoder.com/acm/contest/46810/A

J Tokitsukaze and Sum of MxAb

这题瞎蒙做对的,求大佬指点

我的思路:

先写了个双循环的代码,过不了
自己编了些案例,发现结果就是所有数相加再乘2n,然后就稀里糊涂的过了

#include <iostream>
using namespace std;

int main() {
	long long int t, n, res, a[100005];
	cin >> t;
	while (t--) {
		res = 0;
		cin >> n;
		for (int i = 0; i < n; i++) {
			cin >> a[i];
            res+=abs(a[i]);
		}
        res=res*2*n;
		cout << res << endl;
	}
}
编程比赛题解 文章被收录于专栏

各类编程比赛题解

全部评论
举个例子,1,-2,3,观察可知,每次max相当于两个绝对值相加。分解每次加的过程,以2为例,2+1,2+2,2+3总和即2n+sum,然后有前面的1n,2n,3n放一起就是sum*n,后面的sum有n个,加在一起2n*sum。
2 回复 分享
发布于 2023-01-18 18:36 安徽
我是把绝对值稍微拆开, 然后转化成数轴上每一个点到原点的距离, 然后每一个点有作为i选j和作为j被选两种, 每一种都是被加n次, 所以直接让abs(a[i]) * n * 2累加起来就可以了, 不知道理解的对不对
点赞 回复 分享
发布于 2023-01-19 12:06 河南
就是这样做的吧
点赞 回复 分享
发布于 2023-01-18 18:49 浙江
看了下群里的题解,大概懂了(也许) 我只想到 max(abs(a[i]-a[j]),abs(a[i]+a[j]))=max(a[i]-a[j],a[j]-a[i],a[i]+a[j],0-a[i]-a[j]) 没想到要加上绝对值,更没往下想了
点赞 回复 分享
发布于 2023-01-18 18:29 江苏

相关推荐

评论
6
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务