#P3802. Cubist Artwork

Cubist Artwork

题目描述

毕加索立体主义国际中心是西班牙一家专注于立体主义艺术作品的国家博物馆,致力于展示巴勃罗·毕加索的作品。该中心举办了一场艺术作品竞赛,获奖作品将被陈列在博物馆建筑的正前方。这件作品是一堆堆叠在地面上的立方体,旨在让参观者感到好奇:当从正面和侧面观察时,这堆立方体的形状会如何变化。

这件艺术品由边长为1英尺的立方体组成,放置在一个被划分为1英尺×1英尺方格的平坦地面上。由于技术原因,立方体只能以以下方式放置:要么直接放在地面上(占据网格中的一个单位方格),要么叠放在另一个立方体上(上层立方体的底面必须完全覆盖下层立方体的顶面),不允许其他放置方式。

你是评审委员会成员,负责从大量参赛作品中选出一件。评选主要基于艺术质量,但安装成本也是一个重要因素。你的任务是调查每个提案的安装成本。由于成本与立方体数量成正比,你需要计算出安装所需的最小立方体数量。

每个艺术提案由正视图侧视图(从右侧观察的视图)组成,如图1所示。

  • 正视图(左图)表示网格中每一列的立方体堆叠的最大高度(按从左到右的顺序)。
  • 侧视图(右图)表示网格中每一行的立方体堆叠的最大高度(按从左到右的顺序,从右侧观察时,行的顺序与实际网格的行顺序相反)。

存在多种安装方式,例如以下两图:

左图使用了16个立方体,并非最优;右图为最优解,仅用13个立方体。注意,右图中一个高度为3的堆叠同时满足了正视图和侧视图中两个不同位置的高度要求。

注意,交换列的顺序不会改变侧视图,交换行的顺序不会改变正视图,因此这类交换不会影响安装成本。例如,图2的提案可以通过交换图1最优解中最右侧两列的位置来实现,同样使用13个立方体。

输入

输入包含多个数据集,以一行两个0表示输入结束。每个数据集格式如下:

w d  
h1 h2 ... hw  
h1' h2' ... hd'  
  • (w) 和 (d) 分别为网格的列数和行数((1 \leq w, d \leq 10))。
  • 第二行的 (h_i)((1 \leq h_i \leq 20))表示正视图中各列的最大高度(从左到右)。
  • 第三行的 (h_i')((1 \leq h_i' \leq 20))表示侧视图中各行的最大高度(从左到右,对应实际网格中从后到前的行)。

输出

对每个数据集,输出一行表示所需的最小立方体数量,不得包含其他字符。保证每个数据集至少存在一种可行的安装方式。

输入示例 1

5 5  
1 2 3 4 5  
1 2 3 4 5  
5 5  
2 5 4 1 3  
4 1 5 3 2  
5 5  
1 2 3 4 5  
3 3 3 4 5  
3 3  
7 7 7  
7 7 7  
3 3  
4 4 4  
4 3 4  
4 3  
4 2 2 4  
4 2 1  
4 4  
2 8 8 8  
2 3 8 3  
10 10  
9 9 9 9 9 9 9 9 9 9  
9 9 9 9 9 9 9 9 9 9  
10 9  
20 1 20 20 20 20 20 18 20 20  
20 20 20 20 7 20 20 20 20  
0 0  

输出示例 1

15  
15  
21  
21  
15  
13  
32  
90  
186  

来源

Tokyo 2009