修题面
查看原帖
修题面
682739
CuteMurasame楼主2023/2/12 14:32

[NOIP2014 普及组] 子矩阵

题目背景

NOIP2014 普及组 T4。

题目描述

给出如下定义:

  1. 子矩阵:从一个矩阵当中选取某些行和某些列交叉位置所组成的新矩阵(保持行与列的相对顺序)被称为原矩阵的一个子矩阵。

    例如,下面图中选取第 2,42,4 行和第 2,4,52,4,5 列交叉位置的元素得到一个 2×32 \times 3 的子矩阵如下所示。

993\color{#6a5acd}3333\color{#6a5acd}39\color{#6a5acd}9
9\color{#6a5acd}94\color{blue}48\color{#6a5acd}87\color{blue}74\color{blue}4
117\color{#6a5acd}7446\color{#6a5acd}66\color{#6a5acd}6
6\color{#6a5acd}68\color{blue}85\color{#6a5acd}56\color{blue}69\color{blue}9
774\color{#6a5acd}4556\color{#6a5acd}61\color{#6a5acd}1

此矩阵的其中一个 2×32\times3 的子矩阵是:

447744
886699
  1. 相邻的元素:矩阵中的某个元素与其上下左右四个元素(如果存在的话)是相邻的。

  2. 矩阵的分值:矩阵中每一对相邻元素之差的绝对值之和。

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

输入格式

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

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

输出格式

一个整数,表示满足题目描述的子矩阵的最小分值。

提示

输入输出样例 1\bm1 说明

该矩阵中分值最小的 2233 列的子矩阵由原矩阵的第 44 行、第 55 行与第 11 列、第 33 列、第 44 列交叉位置的元素组成,为:

665566
775566

其分值为 65+56+75+56+67+55+66=6|6-5|+|5-6|+|7-5|+|5-6|+|6-7|+|5-5|+|6-6|=6

输入输出样例 2\bm2 说明

该矩阵中分值最小的 3333 列的子矩阵由原矩阵的第 44 行、第 55 行、第 66 行与第 22 列、第 66 列、第 77 列交叉位置的元素组成,选取的分值最小的子矩阵为:

997788
998888
55881010

数据范围

  • 对于 50%50\% 的数据,1n121\leq n\leq 121m121\leq m\leq 12,矩阵中的每个元素 1ai,j201\leq a_{i,j}\leq20

  • 对于 100%100\% 的数据,1n161\leq n\leq 161m161\leq m\leq 16,矩阵中的每个元素 1ai,j10001\leq a_{i,j}\leq 10001rn1\leq r\leq n1cm1\leq c\leq m

# [NOIP2014 普及组] 子矩阵

## 题目背景

NOIP2014 普及组 T4。

## 题目描述

给出如下定义:


1. 子矩阵:从一个矩阵当中选取某些行和某些列交叉位置所组成的新矩阵(保持行与列的相对顺序)被称为原矩阵的一个子矩阵。


    例如,下面图中选取第 $2,4$ 行和第 $2,4,5$ 列交叉位置的元素得到一个 $2 \times 3$ 的子矩阵如下所示。

|$9$|$\color{#6a5acd}3$|$3$|$\color{#6a5acd}3$|$\color{#6a5acd}9$|
|:-|:-|:-|:-|:-|
|$\color{#6a5acd}9$|$\color{blue}4$|$\color{#6a5acd}8$|$\color{blue}7$|$\color{blue}4$|
|$1$|$\color{#6a5acd}7$|$4$|$\color{#6a5acd}6$|$\color{#6a5acd}6$|
|$\color{#6a5acd}6$|$\color{blue}8$|$\color{#6a5acd}5$|$\color{blue}6$|$\color{blue}9$|
|$7$|$\color{#6a5acd}4$|$5$|$\color{#6a5acd}6$|$\color{#6a5acd}1$|

此矩阵的其中一个 $2\times3$ 的子矩阵是:

|$4$|$7$|$4$|
|:-|:-|:-|
|$8$|$6$|$9$|

2. 相邻的元素:矩阵中的某个元素与其上下左右四个元素(如果存在的话)是相邻的。


3. 矩阵的分值:矩阵中每一对相邻元素之差的绝对值之和。


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


## 输入格式

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

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

## 输出格式

一个整数,表示满足题目描述的子矩阵的最小分值。

## 提示

### 输入输出样例 $\bm1$ 说明

该矩阵中分值最小的 $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$。

### 输入输出样例 $\bm2$ 说明

该矩阵中分值最小的 $3$ 行 $3$ 列的子矩阵由原矩阵的第 $4$ 行、第 $5$ 行、第 $6$ 行与第 $2$ 列、第 $6$ 列、第 $7$ 列交叉位置的元素组成,选取的分值最小的子矩阵为:

|$9$|$7$|$8$|
|:-|:-|:-|
|$9$|$8$|$8$|
|$5$|$8$|$10$|

### 数据范围

- 对于 $50\%$ 的数据,$1\leq n\leq 12$,$1\leq m\leq 12$,矩阵中的每个元素 $1\leq a_{i,j}\leq20$;


- 对于 $100\%$ 的数据,$1\leq n\leq 16$,$1\leq m\leq 16$,矩阵中的每个元素 $1\leq a_{i,j}\leq 1000$,$1\leq r\leq n$,$1\leq c\leq m$。
2023/2/12 14:32
加载中...