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