luogu#P16552. [ICPC 2026 LAC] Fun with Balls

[ICPC 2026 LAC] Fun with Balls

题目描述

Antonella 有 NN 个彩色球,她希望用它们搭建一个稳定的球堆。一个球堆是稳定的,当且仅当每个球要么放在地面上,要么恰好放在另外两个球的正上方。此外,放在地面上的球必须紧密排列,这意味着它们之间不应有空隙。下图展示了三种球的排列方式:左侧是一个稳定的球堆,而另外两个则是失败的尝试。

:::align{center} :::

Antonella 希望通过一个逐步添加的过程来搭建稳定的球堆。首先,她会挑选一个球并将其放置在地面上,形成一个仅由一个球构成的稳定球堆。然后,她将逐个添加剩余的 N1N-1 个球,并在每一步都保持球堆的稳定性。如果存在多个可以添加球的位置,她会选择最高的位置(相对于地面)。若仍有多个可选位置,她可以任选其一。

在稳定球堆中,若对于某个球集中的任意两个球 sstt,存在一个球的序列 s=b0,b1,,bk=ts = b_0, b_1, \dots, b_k = t,使得对于 i=1,2,,ki = 1, 2, \dots, kbi1b_{i-1}bib_i 相接触,则称该球集是连通的。一个同色团是由相同颜色的球构成的连通球集。同色团的大小是指它所包含的球的数量。上图所示的稳定球堆中包含两个红色的同色团,大小分别为 3311,一个绿色的同色团大小为 33,以及一个蓝色的同色团大小为 66

给定 Antonella 将使用的球的颜色顺序,你需要求出在所有可能搭建出的稳定球堆中,所有同色团大小的最大值。

输入格式

第一行包含一个整数 NN1N1501 \le N \le 150),表示球的数量。

第二行包含 NN 个整数 K1,K2,,KNK_1, K_2, \dots, K_N(对于 i=1,2,,Ni = 1, 2, \dots, N,有 1Ki1501 \le K_i \le 150),其中 KiK_i 表示 Antonella 将要添加的第 ii 个球的颜色。

输出格式

输出一行一个整数,表示在所有可能搭建出的稳定球堆中,所有同色团大小的最大值。

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

提示

样例 1 解释:

Antonella 会将第一个球(颜色 11)放在地面上。她也会将第二个球(颜色 22)放在地面上,但可以放在第一个球的左侧或右侧。当插入第三个球(颜色 11)时,她会将它放在前两个球的正上方。无论 Antonella 如何选择第二个球的位置,最终得到的稳定球堆中都会包含一个大小为 22 的同色团(颜色 11)和一个大小为 11 的同色团(颜色 22)。因此,所有可能稳定球堆中同色团大小的最大值为 22

翻译由 DeepSeek V4 Pro 完成