欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【hpu oj 1018 985的最大和难题 [思维]】

程序员文章站 2022-07-04 12:26:55
...

点击打开链接

【hpu oj 1018 985的最大和难题 [思维]】


/*
np 正数个数
nm 负数个数
Min 记录绝对值最小的数字
s 记录所有数字的和 
*/
#include<cstdio>
int main()
{
	int n,t,a,np,nm,Min,s,m;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d",&n);	
		Min=1000000000+1103,np=nm=s=0;
		m=2*n-1;
		while(m--)
		{
			scanf("%d",&a);
			if(a<0) a=-a,nm++;
			else np++;
			s+=a;
			if(a<Min) Min=a;
		}
		/*n为奇数时,变换n可以一次增加或减少一个负数,直到所有负数全化为正数*/ 
		if(n&1)
			printf("%d\n",s);
		else/*n为偶数时,变换n个可以一次增加或减少2个负数*/
			if(nm&1) 
				printf("%d\n",s-2*Min);
			else
				printf("%d\n",s);
	}
	return 0;
}