#P1169. Packing Rectangles
Packing Rectangles
题目描述

给定 4 个矩形,要求找到一个面积最小的新矩形,使得这 4 个矩形能够不重叠地放入其中,并且所有矩形的边必须与外包矩形的对应边平行。
- 最小外包矩形:指所有可行解中面积最小的矩形。
- 基本排列方式:共有 6 种基本布局(如图1所示),其他任何排列方式均可通过这 6 种基本布局旋转或镜像得到。
- 可能存在多个解(即多个不同长宽组合的外包矩形具有相同的最小面积)。
输入
程序从标准输入读取数据:
- 输入共 4 行,每行描述一个矩形,包含 2 个正整数(表示矩形的边长,范围 )。
输出
程序向标准输出写入结果:
- 第一行:一个整数,表示最小外包矩形的面积。
- 后续行:每行输出一个解,格式为 (,表示外包矩形的长和宽)。
- 所有解必须按 升序排列。
- 必须保证所有解互不相同。
输入样例 1
1 2
2 3
3 4
4 5
输出样例 1
40
4 10
5 8
补充说明
- 6 种基本布局:
- 直线排列(4 个矩形排成一行或一列)
- 2×2 方块排列(两行两列)
- 3+1 排列(3 个矩形排成一行,第 4 个矩形垂直或水平拼接)
- 2+1+1 排列(2 个矩形排成一行,另外 2 个分别垂直或水平拼接)
- L 形排列(3 个矩形组成 L 形,第 4 个矩形填补空缺)
- Z 形排列(交错排列,类似阶梯形状)
- 优化目标:在所有可能的排列方式中,找到面积最小的外包矩形,并输出所有可能的长宽组合。