CF2141F.Array Reduction
提高+/省选-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个包含 n 个整数的数组 a。
每次操作,你可以选择数组中的若干元素并将它们移除。然而,你选择的元素必须满足以下两种条件之一:
- 所有被选择的元素都相等;
- 被选择的元素两两不同。
注意,如果只选择了 1 个元素进行移除,则自动满足这些条件。
例如,如果 a={1,2,1,1,3},则你可以在一次操作中移除的元素有:
- 第 1 个元素;
- 第 1 个和第 3 个元素;
- 第 1、第 3、第 4 个元素;
- 第 3 个和第 4 个元素;
- 第 2、第 4、第 5 个元素;
- 以及其它若干种组合。
但是,你不能选择第 2、第 3、第 4 个元素,因为第 2 个元素不等于第 4 个元素,但第 3 和第 4 个元素相等。
对于每个 x 从 0 到 n−1,你需要计算将数组长度减少到恰好 x 所需的最少操作次数。
输入格式
第一行包含一个整数 t(1≤t≤104),表示测试用例数量。
每个测试用例包含两行:
- 第一行包含一个整数 n(1≤n≤3⋅105),表示数组的长度;
- 第二行包含 n 个整数 a1,a2,…,an(1≤ai≤n),表示数组元素。
输入的额外限制:所有测试用例中 n 的总和不超过 3⋅105。
输出格式
对于每个测试用例,输出 n 个整数 c0,c1,…,cn−1,其中 ci 表示将数组大小恰好缩减到 i 所需的最少操作次数。
输入输出样例
输入#1
5 11 5 5 5 5 2 2 2 8 6 1 7 6 3 3 3 3 3 3 5 2 1 3 5 4 8 1 1 1 2 3 4 5 6 1 1
输出#1
3 3 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 1 1 1 1 1 1 1
说明/提示
在第一个示例中,答案可以如下得到:
- c0=3:移除 a8,a9,a10,a11;然后移除 a1,a2,a3,a4;再移除 a5,a6,a7;
- c1=3:移除 a8,a9,a10,a11;然后移除 a1,a2,a3,a4;再移除 a5,a6;
- c2=2:移除 a7,a8,a9,a10,a11;然后移除 a1,a2,a3,a4;
- c3=2:移除 a7,a8,a9,a10,a11;然后移除 a1,a2,a3;
- c4=2:移除 a7,a8,a9,a10,a11;然后移除 a1,a2;
- c5=1:移除 a1,a7,a8,a9,a10,a11;
- c6=1:移除 a7,a8,a9,a10,a11;
- c7=1:移除 a1,a2,a3,a4;
- c8=1:移除 a1,a2,a3;
- c9=1:移除 a1,a2;
- c10=1:移除 a7。
由 ChatGPT 5 翻译
输入解题思路,AI测评打分。不知道怎么写?