题目背景
江湖路上走走停停,翻开年少漂泊的回忆。
如今走过这世间,万般留恋,风吹起了从前 。
题目描述
孙亦谐准备建西湖雅座来开饭馆。
他有 n 个零件,零件的大小均为 h×w。零件从 1∼n 编号。
对于一个大小为 h×w 的零件,其可视为一个 h 行 w 列的矩阵 w。若用 ai,j 来表示这个矩阵中第 i 行第 j 列的元素。对于 ∀ai,j,都有 ai,j∈{0,1}。
则编号为 i 的零件的面积为: S(i)=∑i=1h∑j=1wai,j。
若编号为 l 和 r 的两个零件的分别表示为矩阵 a 和 b,其在同一座楼的稳固程度可表示为:
f(l,r)=i=1∑hj=1∑w[(ai,j=1) and (bi,j=1)]孙亦谐需要将这 n 个零件先选取若干个按照任意顺序排列搭成大楼,然后把剩余的零件搭成小楼。若没有剩余零件,则可以不搭小楼。
设 U 表示某座楼选取的零件编号的集合,则这座楼能成功搭建的条件是:
∀i,j∈U,f(i,j)≥⌈2min(S(i),S(j))⌉孙亦谐想知道在保证两座楼能成功搭建的条件下,让大楼使用的零件数尽量多。若无法成功搭建,则直接输出 -1
。
输入格式
第一行输入包含三个正整数 n,h,w,分别表示零件的个数、零件的行数、零件的列数。
接下来输入 n 个零件所表示的矩阵。
对于每个零件的矩阵 a,输入的格式如下:
共输入 h 行,每行 w 个元素。
第 i 行第 j 列的元素 ai,j,表示这个矩阵中第 i 行第 j 列的元素。
输出格式
输出一个整数,表示在搭建成功的情况下,大楼最多能使用多少个零件。若无法成功搭建,则直接输出 -1
。
提示
【样例1解释】
可以证明最优方案是用第一个零件和第三个零件搭大楼,用第二个零件搭小楼。
【数据范围】
本题采用捆绑测试。
- Subtask 1(30 points):n≤20。
- Subtask 2(5 points):w=h=1。
- Subtask 3(65 points):无特殊限制。
对于所有测试数据,1≤n≤1000,1≤w,h≤6。