矩阵游戏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
 

压缩数组,采取贪心策略,两两小于0则取反,两两大于0则不变,一大一下判断反不反。

注意不要忽略最后单出来的一位。

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=;
int h[maxn];
int main()
{
int i,j,n,k,ans=;
scanf("%d",&n);
for(i=;i<=n;i++)
for(j=;j<=n;j++){
scanf("%d",&k);
h[j]+=k;
}
sort(h+,h+n+);
for(i=;i<n;i+=){
if(h[i]<=&&h[i+]<=) ans=ans-h[i]-h[i+];
else if(h[i]>=&&h[i+]>=) ans=ans+h[i]+h[i+];
else if(h[i]<=&&h[i+]>=) ans=ans+max(h[i+]+h[i],-h[i]-h[i+]);
}
for(;i<=n;i++) ans+=h[i];
printf("%d\n",ans);
return ;
}

最新文章

  1. [LeetCode] Reverse Words in a String II 翻转字符串中的单词之二
  2. 【bzoj1708】[USACO2007 Oct]Money奶牛的硬币
  3. unicode 和 utf8
  4. oracle 11g 一直提示 严重: 监听程序未启动或数据库服务未注册到该监听程序
  5. Office 365 - Windows PowerShell for SharePoint Online
  6. extern 数组
  7. php中的ceil和floo以及round函数
  8. OC2_分数类
  9. Voilin 之 握弓
  10. Java求素数时出现错误
  11. git bash 支持中文
  12. PyQt4转换ui为py文件需添加如下代码才可执行
  13. 30天学会绘画 (Mark Kistler 著)
  14. Cache-control使用Cache-control:private学习笔记【转载】
  15. U68641 划水(swim.pas/c/cpp)
  16. 个人博客地址: furur.xyz
  17. Linux/AIX/Windows端口和进程互查
  18. 使用Puppeteer进行数据抓取(四)——快速调试
  19. Mac 重建 Spotlight 索引
  20. Android之ListView分页数据加载

热门文章

  1. Asp.Net Web API 2 官网菜鸟学习系列导航
  2. python3:利用smtplib库和smtp.qq.com邮件服务器发送邮件
  3. poj2431 一直Wa
  4. lua身份证号码验证~
  5. Spring AOP(4)
  6. PHP7的五大新特性
  7. linux 挂在新硬盘
  8. Spring Cloud 之Spring-Security
  9. SDOI2019&amp;十二省联考 游记
  10. NumPy来自数值范围的数组