QOJ.ac

QOJ

Limite de temps : 5 s Limite de mémoire : 2048 MB Points totaux : 100

#8859. 套娃

Statistiques

俄罗斯套娃是一套传统的俄罗斯木制玩偶,它们按尺寸由大到小依次套在一起。打开一个套娃,里面会露出一个同类但更小的玩偶,而那个玩偶里面又套着另一个玩偶,以此类推。

图片来自 Wikimedia Commons

俄罗斯套娃博物馆最近展出了一套设计相似的套娃,它们唯一的区别在于每套中嵌套玩偶的数量。不幸的是,一些过于热心(且显然无人看管)的孩子把这些套娃拆开了,并将所有单个玩偶排成一行。这一行中有 $n$ 个玩偶,每个玩偶都有一个整数尺寸。你需要重新组装这些套娃,但你既不知道套娃的套数,也不知道每套中玩偶的数量。你只知道每一套完整的套娃都由尺寸从 $1$ 到某个数字 $m$ 的连续玩偶组成,其中 $m$ 在不同的套娃之间可能有所不同。

在重新组装套娃时,必须遵循以下规则:

  • 你只能将一个玩偶或一组嵌套的玩偶放入一个更大的玩偶中。
  • 你只能合并行中相邻的两组玩偶。
  • 一旦一个玩偶成为某一组的成员,它就不能被转移到另一组,也不能永久地从该组中分离。只有在合并两组时,它才可以被暂时分离。

你的时间很宝贵,你希望尽可能快地完成这个重组过程。这项任务中唯一耗时的部分是打开并随后关闭玩偶,因此你希望尽量减少操作次数。例如,将组 $[1, 2, 6]$ 与组 $[4]$ 合并时,最少需要打开(并随后关闭)的次数为两次,因为你必须打开尺寸为 $6$ 和 $4$ 的玩偶。将组 $[1, 2, 5]$ 与组 $[3, 4]$ 合并时,你需要执行三次打开操作。

编写一个程序,计算合并所有拆散的套娃组所需的最少打开次数。

输入格式

输入包含一组测试数据。测试数据由两行组成。第一行包含一个整数 $n$ ($1 \le n \le 500$),表示行中单个玩偶的数量。第二行包含 $n$ 个正整数,指定了玩偶在行中出现的顺序及其尺寸。每个尺寸都在 $1$ 到 $500$ 之间(含 $1$ 和 $500$)。

输出格式

显示重新组装套娃时所需的最少打开次数。如果无法完成重组(有些孩子可能过于热心,拿走了一些玩偶),则输出单词 impossible

样例

输入 1

7
1 2 1 2 4 3 3

输出 1

impossible

输入 2

7
1 2 3 2 4 1 3

输出 2

7

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.