CF48B Land Lot

题目描述

Vasya 有一个美丽的花园,每年都会收获美味的果实。但是最近小偷晚上经常偷偷溜进花园里偷水果。Vasya 不能在花园里过夜守卫,因为花园里没有房子!Vasya 已经存钱一段时间,终于决定建一座房子。剩下的问题很简单:他需要选择在花园的哪个部分建造房子。 傍晚,他坐在桌前,画出了花园的平面图。平面图上,花园被表示为一个 $n \times m$ 的矩形方格,每个方格的边长为 $1$。在一些格子里,Vasya 标记了那儿种着树(为了防止树太密,每格最多一棵树)。Vasya 想找到一个 $a \times b$ 大小的矩形地块来建房,且地块边界必须沿着分隔这些格子的网格线。所有在建房地块上的树都必须被砍掉,Vasya 很爱他的花园,所以请你帮他选择一个地块使得被砍掉的树最少。

输入格式

第一行包含两个整数 $n$ 和 $m$,表示花园的大小,其中 $1 \leq n,m \leq 50$。接下来的 $n$ 行,每行包含 $m$ 个数字 $0$ 或 $1$,描述花园的情况。$0$ 表示该格子没有树,$1$ 表示该格子里有一棵树。最后一行包含两个整数 $a$ 和 $b$,其中 $1 \leq a,b \leq 50$。注意,Vasya 可以选择一个 $a \times b$ 的矩形地块,也可以选择 $b \times a$,也就是说,长度为 $a$ 的边既可以平行于花园的边长为 $n$ 的边,也可以平行于边长为 $m$ 的边。

输出格式

输出建造房子的矩形地块最多需要砍掉的树的最小值。保证至少存在一个合法的地块位置,即 $a \leq n$ 且 $b \leq m$,或者 $a \leq m$ 且 $b \leq n$。

说明/提示

在第二个样例中,左上角的格子为 $(1,1)$,右下角的格子为 $(3,2)$。 由 ChatGPT 5 翻译