题目描述

给定一个 n ∗ m 个矩阵,矩阵中每个数都是 [1, 12] 内的整数。你可以执行下列两个操作任意多次:

• 指定一行,将该行所有数字 +1.

• 指定一列,将该列所有数字 +1.

如果执行完上述操作之后,矩阵中某个数变成了 3, 6, 9, 12 其中的某一个,我们认为这个数是稳的。

给定初始矩阵,求出任意执行操作之后稳数的最多个数。

输入输出格式

输入格式:

第一行包含两个正整数 n, m。

接下来 n 行,每行 m 个数,描述这个矩阵。

输出格式:

一个整数,表示答案。

输入输出样例

输入样例#1:

3 3
1 2 3
3 2 4
1 2 1
输出样例#1:

7
输入样例#2:

5 5
2 4 6 8 10
1 2 3 4 5
3 4 5 6 7
7 8 9 10 11
5 10 12 3 7
输出样例#2:

20

分析:对于每一行和每一列而言,加i次一定比加i+3次更优,因为3次一个循环,有可能i+3次后数就大于12了,所以对于每一行每一列最多只需要加2次.这种题行与列之间互相有影响,但是行与行,列与列之间没有影响的,可以先把行的操作给枚举出来,列是独立的,贪心地考虑每一列操作多少次即可.

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; int n, m, a[][], cnt[], c1, c2, c0, res, ans; void solve()
{
res = ;
for (int i = ; i <= m; i++)
{
c0 = c2 = c1 = ;
for (int j = ; j <= n; j++)
{
if ((a[j][i] + cnt[j]) % == && a[j][i] + cnt[j] <= )
c0++;
if ((a[j][i] + cnt[j] + ) % == && a[j][i] + cnt[j] + <= )
c1++;
if ((a[j][i] + cnt[j] + ) % == && a[j][i] + cnt[j] + <= )
c2++;
}
res += max(max(c0, c1), c2);
}
ans = max(ans, res);
} void dfs(int dep)
{
if (dep == n + )
{
solve();
return;
}
for (int i = ; i <= ; i++)
{
cnt[dep] = i;
dfs(dep + );
}
} int main()
{
scanf("%d%d", &n, &m);
for (int i = ; i <= n; i++)
for (int j = ; j <= m; j++)
scanf("%d", &a[i][j]);
dfs();
printf("%d\n", ans); return ;
}

最新文章

  1. 简述 OAuth 2.0 的运作流程
  2. 基于Docker快速搭建多节点Hadoop集群--已验证
  3. Spring Boot下配置MyBatis多数据源
  4. 查看SSIS Package 部署的历史记录
  5. java内存模型-锁
  6. Linux各版本的本地root密码破解方法
  7. 解决discuz论坛搬家:“Table ‘common_syscache’ is read only”问题
  8. bzoj4716 假摔
  9. http://www.cnblogs.com/xdp-gacl/p/4040019.html
  10. centos jdk切换
  11. 常用的Eclipse快捷键
  12. ubuntu12.04中如何设定中文输入法
  13. python顶级执行代码
  14. java的几种引用之二
  15. SpringBoot(十五)_springboot实现预览pdf
  16. PostgreSQL之性能优化(转)
  17. Macbook系统环境安装wget的2个方法 - 传统包及Homebrew安装
  18. 数据分析与挖掘 - R语言:KNN算法
  19. C++根据传入的函数指针来解析需要的参数
  20. android--Git上克隆项目遇到的坑

热门文章

  1. 银行系统ps:不太完善,蟹蟹评论
  2. Java进阶知识点:并发容器背后的设计理念
  3. LeetCode - 389. Find the Difference - 三种不同解法 - ( C++ ) - 解题报告
  4. UVa 1225 - Digit Counting - ACM/ICPC Danang 2007 解题报告 - C语言
  5. RDL/RDLC批量单据打印 [转]
  6. java DTO 转 POJO
  7. vue学习笔记之:为何data是一个方法
  8. iOS- 如何将非ARC的项目转换成ARC项目(实战)
  9. TCP系列24—重传—14、F-RTO虚假重传探测
  10. ssl证书验证的问题