CF1615G Maximum Adjacent Pairs

题目描述

给定一个由 $n$ 个非负整数组成的数组 $a$。 你需要将数组中每个 $0$ 替换为 $1$ 到 $n$ 之间的某个整数(不同的 $0$ 可以替换为不同的整数)。 你得到的新数组的“价值”定义如下:对于 $1$ 到 $n$ 中的每个整数 $k$,如果存在一对相邻元素都等于 $k$(即存在某个 $i \in [1, n-1]$ 使得 $a_i = a_{i+1} = k$),则 $k$ 会被计入价值一次(即使有多个这样的相邻对,$k$ 只计一次)。 你的任务是通过合理替换 $0$,使得数组的价值最大,并输出一种方案。

输入格式

第一行包含一个整数 $n$($2 \le n \le 3 \cdot 10^5$),表示数组的长度。 第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($0 \le a_i \le \min(n, 600)$),表示数组的元素。

输出格式

输出 $n$ 个整数,每个整数不少于 $1$ 且不大于 $n$,表示你替换 $0$ 后得到的数组,使其价值最大。 如果有多种方案,输出任意一种均可。

说明/提示

由 ChatGPT 4.1 翻译