2014子矩阵

题目描述 Description

给出如下定义:

  1. 子矩阵:从一个矩阵当中选取某些行和某些列交叉位置所组成的新矩阵(保持行与 列的相对顺序)被称为原矩阵的一个子矩阵。
    例如,下面左图中选取第 2、4 行和第 2、4、5 列交叉位置的元素得到一个 2*3 的子矩阵如右图所示。
  2. 相邻的元素:矩阵中的某个元素与其上下左右四个元素(如果存在的话)是相邻的。
  3. 矩阵的分值:矩阵中每一对相邻元素之差的绝对值之和。

本题任务:给定一个 n 行 m 列的正整数矩阵,请你从这个矩阵中选出一个 r 行 c 列的 子矩阵,使得这个子矩阵的分值最小,并输出这个分值。

输入描述 Input Description

第一行包含用空格隔开的四个整数 n,m,r,c,意义如问题描述中所述,每两个整数之间用一个空格隔开。

接下来的 n 行,每行包含 m 个用空格隔开的整数,用来表示问题描述中那个 n 行 m 列的矩阵。

输出描述 Output Description

输出共 1 行,包含 1 个整数,表示满足题目描述的子矩阵的最小分值。

样例输入 Sample Input

样例输入1

5 5 2 3

9 3 3 3 9

9 4 8 7 4

1 7 4 6 6

6 8 5 6 9

7 4 5 6 1

样例输入2

7 7 3 3

7 7 7 6 2 10 5

5 8 8 2 1 6 2

2 9 5 5 6 1 7

7 9 3 6 1 7 8

1 9 1 4 7 8 8

10 5 9 1 1 8 10

1 3 1 5 4 8 6

样例输出 Sample Output

样例输出1

6

样例输出2

16

数据范围及提示 Data Size & Hint

对于 50%的数据,1 ≤ n ≤ 12, 1 ≤ m ≤ 12, 矩阵中的每个元素 1 ≤ a[i][j] ≤20;

对于 100%的数据,1 ≤ n ≤ 16, 1 ≤ m ≤ 16, 矩阵中的每个元素 1 ≤ a[i][j] ≤1000,1 ≤ r ≤ n, 1 ≤ c ≤ m。

时间限制:每一组测试数据1s。

【输入输出样例 1 说明】
该矩阵中分值最小的 2 行 3 列的子矩阵由原矩阵的第 4 行、第 5 行与第 1 列、第 3 列、 第 4 列交叉位置的元素组成,为

6 5 6

7 5 6

,其分值为 |6 − 5| + |5 − 6| + |7 − 5| + |5 − 6| + |6 − 7| + |5 − 5| + |6 − 6| = 6。

【输入输出样例 2 说明】
该矩阵中分值最小的 3 行 3 列的子矩阵由原矩阵的第 4 行、第 5 行、第 6 行与第 2 列、第 6 列、第 7 列交叉位置的元素组成,选取的分值最小的子矩阵为

9 7 8

9 8 8

5 8 10

题解:

动归+搜索。

感觉就是这些算法(因本人太渣,打不出代码)。

时间: 2024-11-05 14:52:36

2014子矩阵的相关文章

[NOIP 2014普及T4] 子矩阵题解

2014马哥Linux0217中对0214三题的解答

前几天在做2014马哥Linux0214的作业的时候,发现其实这三题在0217中有解答,当然觉得马哥比自己写得好太多,所以忍不住要把马哥的答案贴出来,以供自己学习. 第一题:写一个脚本,用for循环实现显示/etc/init.d/functions./etc/rc.d/rc.sysinit./etc/fstab有多少行 #!/bin/bash for fileName in /etc/init.d/functions /etc/rc.d/rc.sysinit /etc/fstab;do line

BZOJ 1084 最大子矩阵 终于过了

一开始看到这道题,由于觉得m <= 2, 所以觉得这是道水题,回去后想了一下.在晚上来机房的时候已经想出来了,但是我必须承认细节决定成败.远在一个小时前我就已经把算法的主体都写好了,但是就是一直WA,为什么就是各种粗心,真心想捏死自己.一个小时就这么白白浪费了.我希望明天的我能变得强大一点.在有了今日惨痛的教训之后. 这道题并不难.用d[i][j][k] 来表示状态.i表示第几行,j表示之前取了多少个矩阵,k表示上一行的状态.即上一行的矩阵取法.如果k == 0 那么没有一个矩阵延伸到上一行,如

【国家统计局】2013年6月份-2014年5月份70个大中城市住宅销售价格变动情况

2014年5月份70个大中城市住宅销售价格变动情况 http://www.stats.gov.cn/tjsj/zxfb/201406/t20140618_569655.html (一)与上月相比,70个大中城市中,价格下降的城市有35个,持平的城市有20个,上涨的城市有15个.环比价格变动中,最高涨幅为0.3%,最低为下降1.4%. (二)与去年同月相比,70个大中城市中,价格下降的城市有1个,上涨的城市有69个.5月份,同比价格变动中,最高涨幅为11.3%,最低为下降4.8%. -------

[IDE工具配置]myeclipse 2014 专业版 安装 svn插件

团队合作的项目肯定少不了版本控制,那么现在就看看myeclispe中是如何使用的吧. 开发环境:myeclipse 2014   java 8 tomcate 8 试了网上说的几种方法,都没有成功,最终自己还是摸索着弄出来了,这里先记录一下,后期自己再配置的时候好获取路径啥的. 打开myeclipse的help---install from site 点击add弹出对话框 在输入框中输入对应内容 http://subclipse.tigris.org/update_1.10.x 点击OK之后,会

2014总结-表彰一下辛勤的我

2014.3-2014.6月份,做了一个项目<人事管理系统>,这个项目对自己影响还是挺大的,当时我的BS刚刚学习了一部分,在人事系统用到的许多的东西都是没有接触过的,所以BS的一些东西都是从项目中去实践然后学习到的,就是因为这个原因,对于BS的理解特别深刻,也是从这个时候我学会了使用API文档,学会了真正的理解学习应该是什么样子的,知识是学不完的,就像API文档中的内容一样,在不停的扩充无边界,但是我要学会的一种能力就是遇到了问题怎么去利用API文档解决文档. 2014.7-2014.9这期间

2014半年小总结

2014半年小总结 已经毕业工作快满两年了,从一家垄断国字号企业跳到某电商平台,应该是我的职业生涯第一跳了,也很荣幸地投身入互联网浪潮之中.没过多久就融入了这家朝气蓬勃的大家庭.回汉后,起初打算做机器学习.数据挖掘的相关工作,以能延续研究生的课题.不过作为新东家BI组第一位员工,不得不着手搭建基础数据平台. 工作成果与心得 基础数据平台和报表系统,爬虫 五个月,小半年,我们三兄弟的工作成果也是比较显著,在被领导否定第一版数据平台后,开始重新搭建新js埋点作为数据源的基础数据平台. 1. jugg

2014年工作中遇到的10个问题:221-230

221.新建Maven项目的2种方式. a.新建Dynamic Web Project,然后转换成Maven项目. b.新建Maven Project,Next,Next,选择cocoon-22-archetype-webapp. 第2种方式,是boss告诉我的,以前我一直喜欢用第1种方式. 第2种方式,暂时没有去实践.上次尝试了下,报错,郁闷~ 222.web.xml中配置taglib. 在Eclipse中会在taglib那一行有一个错误标志,但是运行的 时候没有问题-- 原因: 所使用版本的

SQL Server 2014 日志传送部署(1):日志传送概述

13.1 日志传送概述 13.1.1日志传送工作原理 日志传送是一种事务日志备份传送技术.日志传送允许从一个数据库(即主服务器上的主数据库)向多个在另外的服务器(即辅助服务器)上的数据库(即辅助数据库)自动发送事务日志备份.在辅助服务器上,这些事务日志备份被恢复到辅助数据库中,并和主数据库保持同步.一个可选的三级服务器(即监视服务器),记录事务日志备份.复制和恢复操作的历史和状态,以及这些操作依照计划不能发生时报警. 在日志传送中可配置一个主服务器实例向多台辅助服务器实例传送事务日志,在日志传送