您的位置:首页 > 其它

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

2017-09-01 20:58 288 查看
点击打开链接



/*
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: