[hihoCoder]#1615 : 矩阵游戏II
2017-10-29 23:16
309 查看
1615 : 矩阵游戏II
时间限制:10000ms单点时限:1000ms
内存限制:256MB
描述
给定一个NxN的整数矩阵,小Hi每次操作可以选择两列,将这两列中的所有数变成它的相反数。
小Hi可以进行任意次操作,他的目标是使矩阵中所有数的和尽量大。你能求出最大可能的和吗?
输入
第一行一个整数N。
以下N行,每行N个整数Aij。
对于30%的数据,2 ≤ N ≤ 10
对于100%的数据,2 ≤ N ≤ 200, -1000 ≤ Aij ≤ 1000
输出
最大可能的和
样例输入
4
-1 1 1 2
-2 -3 1 2
-3 -2 1 2
-4 -1 1 2
样例输出
27
解题思路
这个只操作列,就相当于一维数组的操作,只要排好序,两个两个一加,注意好,中间正负相交的是正是负。注意最后一个不需要任何操作
因为事先不知道数组的大小,所以这里使用了动态数组
AC代码
#include <iostream> #include <algorithm> using namespace std; int main() { int N; cin>>N; int *colTotal = new int ; int **temp; temp = new int * ; for(int i = 0;i < N; ++i) { temp[i] = new int ; } for (int i = 0; i < N; ++i) { for (int j = 0; j < N; ++j) { cin >> temp[i][j]; } } //将二维数组压缩成一维数组 for(int j = 0;j < N; ++j) { colTotal[j]=0; for(int i = 0;i < N; ++i) { colTotal[j] += temp[i][j]; } } sort(colTotal,colTotal + N); int result = 0; for(int i = 0; i < N 4000 ; i += 2) { if((i+1) == N) { result += colTotal[i]; break; } if((colTotal[i] + colTotal[i+1]) >= 0) { result +=(colTotal[i]+colTotal[i+1]); } else { result -=(colTotal[i]+colTotal[i+1]); } } cout << result <<endl; return 0; }
相关文章推荐
- HihoCoder - 1615矩阵游戏II(贪心)
- hiho 1615 矩阵游戏II [Offer收割]编程练习赛33 Problem A 贪心暴力
- codevs1166 矩阵取数游戏(区间DP)
- 洛谷P1722 矩阵 II
- hihoCoder 1143 矩阵快速幂
- 【游戏开发3D数学笔记】4.矩阵和线性变换
- Matrix Swapping II(求矩阵最大面积,dp)
- 洛谷 P1005 Tyvj P1054 [NOIP2007 T3] 矩阵取数游戏 [60分 非高精]
- bzoj 1059矩阵游戏ZJOI 2007
- bzoj 1059: [ZJOI2007]矩阵游戏
- codevs天梯 矩阵取数游戏(昨天太忙没放题上来。。。)高精度+dp
- [省选前题目整理][BZOJ 1059][ZJOI 2007]矩阵游戏(二分图最大匹配)
- codevs 1166 矩阵取数游戏
- LeetCode OJ 之 Jump Game II(“跳跃”游戏 - 二)
- 【LeetCode】Jump Game II 跳跃游戏II - 贪心 Medium
- HLG 1126 Final Destination II(快速幂,矩阵乘法)
- 1059: [ZJOI2007]矩阵游戏 - BZOJ
- Lintcode 螺旋矩阵 II
- [NOI2013]矩阵游戏(矩阵乘法+十进制快速幂)
- BZOJ1059: [ZJOI2007]矩阵游戏