您的位置:首页 > 其它

zzulioj 1899: 985的最大和难题 [规律]

2016-08-09 18:45 405 查看

1899: 985的最大和难题

Time Limit: 1 Sec  Memory Limit:
128 MB
Submit: 307  Solved: 35

SubmitStatusWeb
Board

Description

985有2 * n - 1个整数,他每次可以将其中n个数变号,操作次数不限,问他可以得到的最大和。

Input

第一行输入一个整数t,代表有t组测试数据。
每组数据占两行,第一行输入一个整数n,下面一行输入2*n-1个整数a[]。
注:1 <= t <= 32,1 <= n <= 1e3,-1e3 <= a[] <= 1e3。

Output

输出一个整数代表可以得到的最大和。

Sample Input

2
2
1 1 1
2
-10 20 -10


Sample Output

3
40


n为奇数,一定能全变为正数;

n为偶数:

负数有偶数个,能全变为正数;

有奇数个,使绝对值最小的为负数,其他为正。

代码:

#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;

int main()
{
int t,n,a,i;
int ans,sum,minn;
scanf("%d",&t);
while(t--)
{
sum=0;
minn=10000;
ans=0;
scanf("%d",&n);
for(i=0;i<n*2-1;i++)
{
scanf("%d",&a);
if(a<0)
ans++;
sum+=abs(a);
minn=min(minn,abs(a));
}
if(n&1)
printf("%d\n",sum);
else
{
if(ans%2==0)
printf("%d\n",sum);
else
printf("%d\n",sum-2*minn);
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: