CF1706B Making Towers

题目描述

你有一个长度为 $n$ 的彩色方块序列。第 $i$ 个方块的颜色为 $c_i$,其中 $c_i$ 是 $1$ 到 $n$ 之间的整数。 你将按照如下方式依次将这些方块放置在无限大的坐标网格上: 1. 首先,将第 $1$ 个方块放在 $(0, 0)$。 2. 对于 $2 \le i \le n$,如果第 $i-1$ 个方块被放在 $(x, y)$,那么第 $i$ 个方块可以被放在 $(x+1, y)$、$(x-1, y)$ 或 $(x, y+1)$ 中的一个位置(但不能放在 $(x, y-1)$),且不能放在之前已经有方块的位置。 一座“塔”由 $s$ 个方块组成,这些方块被放在 $(x, y), (x, y+1), \ldots, (x, y+s-1)$ 这些位置上,其中 $(x, y)$ 是某个位置,$s$ 是整数。塔的大小为 $s$,即其中方块的数量。颜色为 $r$ 的塔指的是所有方块颜色均为 $r$ 的塔。 对于每种颜色 $r$($1$ 到 $n$),请独立解决如下问题: - 按照上述规则放置方块,能形成的颜色为 $r$ 的塔的最大大小是多少?

输入格式

第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。 每个测试用例的第一行包含一个整数 $n$($1 \le n \le 10^5$)。 每个测试用例的第二行包含 $n$ 个整数 $c_1, c_2, \ldots, c_n$($1 \le c_i \le n$)。 保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。

输出格式

对于每个测试用例,输出 $n$ 个整数。第 $r$ 个数表示按照题目规则能形成的颜色为 $r$ 的塔的最大大小。如果无法形成颜色为 $r$ 的塔,则输出 $0$。

说明/提示

在第一个测试用例中,形成一个颜色为 $1$ 且大小为 $3$ 的塔的一种可能方式如下: - 将第 $1$ 个方块放在 $(0, 0)$; - 将第 $2$ 个方块放在第 $1$ 个方块的右侧,即 $(1, 0)$; - 将第 $3$ 个方块放在第 $2$ 个方块的上方,即 $(1, 1)$; - 将第 $4$ 个方块放在第 $3$ 个方块的左侧,即 $(0, 1)$; - 将第 $5$ 个方块放在第 $4$ 个方块的左侧,即 $(-1, 1)$; - 将第 $6$ 个方块放在第 $5$ 个方块的上方,即 $(-1, 2)$; - 将第 $7$ 个方块放在第 $6$ 个方块的右侧,即 $(0, 2)$。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1706B/ec98c0f164311a4ec7c2c7d82fee7c9f6eae74e7.png) 位于 $(0, 0)$、$(0, 1)$ 和 $(0, 2)$ 的方块颜色均为 $1$,它们组成了一个大小为 $3$ 的塔。 在第二个测试用例中,注意如下放置方式是不合法的,因为不允许将第 $6$ 个方块放在第 $5$ 个方块的下方: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1706B/39b20d638e1634a0778efb064f52a1e1cffbd150.png) 可以证明无法形成颜色为 $4$ 且大小为 $3$ 的塔。 由 ChatGPT 4.1 翻译