【zzuliOJ】1899 - 985的最大和难题(思维,好题)
2016-08-03 21:26
417 查看
点击打开题目
Submit: 230 Solved: 13
SubmitStatusWeb
Board
每组数据占两行,第一行输入一个整数n,下面一行输入2*n-1个整数a[]。
注:1 <= t <= 32,1 <= n <= 1e3,-1e3 <= a[] <= 1e3。
2
1 1 1
2
-10 20
-10
40
这个思维题挺好的,反正我这个脑袋是比赛的时候没想到。
下面说一个题解:
对于给的每一个数,我们记录里面非负数的个数x,负数的个数y,和绝对值之和,和绝对值最小的数(后面用到了再细谈)
我们每次要从x集合拿a个数,y集合拿b个数,且a+b == n,那么如果n为奇数的话,y集合的负数是可以都变成正数的(方法合理即可)。
如果n为偶数,那么我们只能改变偶数个数,那么就判断y集合的元素是奇数还是偶数,如果是偶数,那么也可以全部变成正数;如果是奇数,那么总有一个数不能变成正数,那么我们为了得到最优解,就让绝对值最小的为负数,sum
- 2*minn即可。
代码如下:
1899: 985的最大和难题
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 230 Solved: 13
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
22
1 1 1
2
-10 20
-10
Sample Output
340
HINT
Source
hpu这个思维题挺好的,反正我这个脑袋是比赛的时候没想到。
下面说一个题解:
对于给的每一个数,我们记录里面非负数的个数x,负数的个数y,和绝对值之和,和绝对值最小的数(后面用到了再细谈)
我们每次要从x集合拿a个数,y集合拿b个数,且a+b == n,那么如果n为奇数的话,y集合的负数是可以都变成正数的(方法合理即可)。
如果n为偶数,那么我们只能改变偶数个数,那么就判断y集合的元素是奇数还是偶数,如果是偶数,那么也可以全部变成正数;如果是奇数,那么总有一个数不能变成正数,那么我们为了得到最优解,就让绝对值最小的为负数,sum
- 2*minn即可。
代码如下:
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; #define CLR(a,b) memset(a,b,sizeof(b)) int main() { int u; int sum,minn; //总和、绝对值最小 int y; //负数的个数 int n; scanf ("%d",&u); while (u--) { scanf ("%d",&n); sum = 0; y = 0; minn = 10000; for (int i = 1 ; i < 2*n ; i++) { int t; scanf ("%d",&t); if (t < 0) y++; sum += abs(t); minn = min (minn , abs(t)); } if (n & 1) //n为奇数的时候所有负数都可以变成正数 printf ("%d\n",sum); else { if (y & 1) sum -= 2*minn; printf ("%d\n",sum); } } return 0; }
相关文章推荐
- zzulioj-1899-985的最大和难题【思维】
- zzulioj1899 985的最大和难题(思维)
- 郑轻OJ/ ZZULIOJ 1899 985的最大和难题(思维)
- zzulioj 1899(985的最大和难题)
- 【zzuli-oj】-1899-985的最大和难题(思维,好)
- zzulioj 1899: 985的最大和难题 [规律]
- 1899: 985的最大和难题
- zzuli 1899: 985的最大和难题
- zzuliOJ 1898:985的数字难题(思维)
- zzulioj1895: 985的0-1串难题(思维)
- 【hpu oj 1018 985的最大和难题 [思维]】
- zzulioj 1902: 985的因子对难题 [思维]
- 1899: 985的最大和难题(好题)
- 1899: 985的最大和难题
- 【zzuliOJ】1895 - 985的0-1串难题(思维)
- zzulioj 1898: 985的数字难题 [思维]
- zzuli 1899 Problem H: 985的最大和难题
- zzuli 1899 985的最大和难题
- ZZULI OJ 1899 985的最大和难题
- 郑轻 1899 985的最大和难题