P11409 西湖有雅座

题目背景

>江湖路上走走停停,翻开年少漂泊的回忆。 如今走过这世间,万般留恋,风吹起了从前 。

题目描述

孙亦谐准备建西湖雅座来开饭馆。 他有 $n$ 个零件,零件的大小均为 $h\times w$。零件从 $1 \sim n$ 编号。 对于一个大小为 $h \times w$ 的零件,其可视为一个 $h$ 行 $w$ 列的矩阵 $w$。若用 $a_{i,j}$ 来表示这个矩阵中第 $i$ 行第 $j$ 列的元素。对于 $\forall a_{i,j}$,都有 $a_{i,j}\in \left \{ 0,1\right \} $。 则编号为 $i$ 的零件的面积为: $S\left(i\right) = \sum_{i = 1}^{h}\sum_{j = 1}^{w}a_{i,j} $。 若编号为 $l$ 和 $r$ 的两个零件的分别表示为矩阵 $a$ 和 $b$,其在同一座楼的稳固程度可表示为: $$f\left(l,r\right) = \sum_{i = 1}^{h} \sum_{j = 1}^{w} \left [ (a_{i,j} = 1) \text{ and } (b_{i,j} = 1) \right ]$$ 孙亦谐需要将这 $n$ 个零件先选取若干个按照任意顺序排列搭成大楼,然后把剩余的零件搭成小楼。若没有剩余零件,则可以不搭小楼。 设 $U$ 表示某座楼选取的零件编号的集合,则这座楼能成功搭建的条件是: $$\forall i,j \in U,f\left (i,j\right) \ge \lceil \frac{ \min \left ( S\left(i \right),S\left(j\right) \right) }{2}\rceil$$ 孙亦谐想知道在保证两座楼能成功搭建的条件下,让大楼使用的零件数尽量多。若无法成功搭建,则直接输出 `-1`。

输入格式

第一行输入包含三个正整数 $n,h,w$,分别表示零件的个数、零件的行数、零件的列数。 接下来输入 $n$ 个零件所表示的矩阵。 对于每个零件的矩阵 $a$,输入的格式如下: 共输入 $h$ 行,每行 $w$ 个元素。 第 $i$ 行第 $j$ 列的元素 $a_{i,j}$,表示这个矩阵中第 $i$ 行第 $j$ 列的元素。

输出格式

输出一个整数,表示在搭建成功的情况下,大楼最多能使用多少个零件。若无法成功搭建,则直接输出 `-1`。

说明/提示

**【样例1解释】** 可以证明最优方案是用第一个零件和第三个零件搭大楼,用第二个零件搭小楼。 **【数据范围】** **本题采用捆绑测试**。 - Subtask 1(30 points):$n \le 20$。 - Subtask 2(5 points):$w = h = 1$。 - Subtask 3(65 points):无特殊限制。 对于所有测试数据,$1 \le n \le 1000$,$1 \le w,h \le 6$。