QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 512 MB Total points: 100

#10449. 堆叠盘子

Statistics

盘子运输公司是一家互联网零售商,顾名思义,他们专门销售盘子。他们以能提供来自众多制造商的种类最齐全的餐盘而自豪。

在最近的一次成本分析中,公司发现他们在包装盘子以供运输上花费了大量资金。部分原因是盘子在放入运输容器之前必须先堆叠起来。显然,这比预期的要耗费更多时间。也许你能帮上忙。

一批盘子由来自几家制造商的盘子组成。来自每家制造商的盘子都是堆叠好的,也就是说,每个盘子都排列成一个单一的堆叠,盘子按大小排序(最小的在顶部,最大的在底部)。我们将这样的堆叠称为“有序堆叠”。为了运输所有这些盘子,你必须将它们合并成一个单一的堆叠,且同样必须是有序的。为了将制造商的堆叠合并成一个单一的堆叠,允许进行两种操作:

  • 拆分 (Split):通过提起堆叠的任意顶部部分并将其放在一边形成一个新的堆叠,可以将一个堆叠拆分为两个堆叠。
  • 合并 (Join):通过将一个堆叠放在另一个堆叠的顶部,可以将两个堆叠合并。这仅在顶部堆叠的底部盘子不大于底部堆叠的顶部盘子时才被允许,也就是说,合并后的堆叠必须是有序的。

注意,任何堆叠的一部分都不能直接放在另一个堆叠的顶部。它必须先被拆分,然后拆分出来的部分才能与另一个堆叠合并。给定一组堆叠,你必须找到将它们转换为单一堆叠所需的最少操作次数。以下示例对应于样例输入,展示了两个堆叠如何在五次操作中转换为一个单一堆叠:

输入格式

每个测试用例以包含一个整数 $n$ ($1 \le n \le 50$) 的行开始,表示需要合并的堆叠数量。接下来是 $n$ 行,每行描述一个堆叠。这些行以一个整数 $h$ ($1 \le h \le 50$) 开头,表示堆叠的高度。该数字后面跟着 $h$ 个正整数,给出了从顶部到底部的盘子直径。所有直径最大为 $10\,000$。这些数字将按非递减顺序排列。

输出格式

对于每个测试用例,显示用例编号以及将给定堆叠合并为单一堆叠所需的最少操作次数(拆分和合并)。

样例

输入 1

2
3 1 2 4
2 3 5
3
4 1 1 1 1
4 1 1 1 1
4 1 1 1 1

输出 1

Case 1: 5
Case 2: 2

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.