CF1706B.Making Towers

传统题 时间 2000 ms 内存 256 MiB 5 尝试 1 已通过 1 标签

Making Towers

题目描述

你有一个长度为 nn 的彩色方块序列。第 ii 个方块的颜色为 cic_i,其中 cic_i11nn 之间的整数。

你将按照如下方式依次将这些方块放置在无限大的坐标网格上:

  1. 首先,将第 11 个方块放在 (0,0)(0, 0)
  2. 对于 2in2 \le i \le n,如果第 i1i-1 个方块被放在 (x,y)(x, y),那么第 ii 个方块可以被放在 (x+1,y)(x+1, y)(x1,y)(x-1, y)(x,y+1)(x, y+1) 中的一个位置(但不能放在 (x,y1)(x, y-1)),且不能放在之前已经有方块的位置。

一座“塔”由 ss 个方块组成,这些方块被放在 (x,y),(x,y+1),,(x,y+s1)(x, y), (x, y+1), \ldots, (x, y+s-1) 这些位置上,其中 (x,y)(x, y) 是某个位置,ss 是整数。塔的大小为 ss,即其中方块的数量。颜色为 rr 的塔指的是所有方块颜色均为 rr 的塔。

对于每种颜色 rr11nn),请独立解决如下问题:

  • 按照上述规则放置方块,能形成的颜色为 rr 的塔的最大大小是多少?

输入格式

第一行包含一个整数 tt1t1041 \le t \le 10^4),表示测试用例的数量。

每个测试用例的第一行包含一个整数 nn1n1051 \le n \le 10^5)。

每个测试用例的第二行包含 nn 个整数 c1,c2,,cnc_1, c_2, \ldots, c_n1cin1 \le c_i \le n)。

保证所有测试用例中 nn 的总和不超过 21052 \cdot 10^5

输出格式

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

说明/提示

在第一个测试用例中,形成一个颜色为 11 且大小为 33 的塔的一种可能方式如下:

  • 将第 11 个方块放在 (0,0)(0, 0)
  • 将第 22 个方块放在第 11 个方块的右侧,即 (1,0)(1, 0)
  • 将第 33 个方块放在第 22 个方块的上方,即 (1,1)(1, 1)
  • 将第 44 个方块放在第 33 个方块的左侧,即 (0,1)(0, 1)
  • 将第 55 个方块放在第 44 个方块的左侧,即 (1,1)(-1, 1)
  • 将第 66 个方块放在第 55 个方块的上方,即 (1,2)(-1, 2)
  • 将第 77 个方块放在第 66 个方块的右侧,即 (0,2)(0, 2)

位于 (0,0)(0, 0)(0,1)(0, 1)(0,2)(0, 2) 的方块颜色均为 11,它们组成了一个大小为 33 的塔。

在第二个测试用例中,注意如下放置方式是不合法的,因为不允许将第 66 个方块放在第 55 个方块的下方:

可以证明无法形成颜色为 44 且大小为 33 的塔。

由 ChatGPT 4.1 翻译

样例

6
7
1 2 3 1 2 3 1
6
4 2 2 2 4 4
1
1
5
5 4 5 3 5
6
3 3 3 1 3 3
8
1 2 3 4 4 3 2 1
3 2 2 0 0 0 0 
0 3 0 2 0 0 
1 
0 0 1 1 1 
1 0 4 0 0 0 
2 2 2 2 0 0 0 0 

在线编程 IDE

建议全屏模式获得最佳体验