CF1631B.Fun with Even Subarrays

普及-

通过率:0%

时间限制:1.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You are given an array aa of nn elements. You can apply the following operation to it any number of times:

  • Select some subarray from aa of even size 2k2k that begins at position ll (1≤l≤l+2⋅k−1≤n1\le l \le l+2\cdot{k}-1\le n, k≥1k \ge 1) and for each ii between 00 and k−1k-1 (inclusive), assign the value al+k+ia_{l+k+i} to al+ia_{l+i}.

For example, if a=[2,1,3,4,5,3]a = [2, 1, 3, 4, 5, 3], then choose l=1l = 1 and k=2k = 2, applying this operation the array will become a=[3,4,3,4,5,3]a = [3, 4, 3, 4, 5, 3].

Find the minimum number of operations (possibly zero) needed to make all the elements of the array equal.

给你一个包含 nn 个元素的数组 aa。你可以对该数组执行以下操作任意多次:

  • 从 aa 中选择一个长度为偶数 2k2k 的子数组,其起始位置为 ll(满足 1≤l≤l+2⋅k−1≤n1\le l \le l+2\cdot{k}-1\le n,且 k≥1k \ge 1),然后对每个 i∈[0,k−1]i\in[0, k-1](含端点),将 al+k+ia_{l+k+i} 的值赋给 al+ia_{l+i}。

例如,若 a=[2,1,3,4,5,3]a = [2, 1, 3, 4, 5, 3],选择 l=1l = 1、k=2k = 2,执行该操作后数组变为 a=[3,4,3,4,5,3]a = [3, 4, 3, 4, 5, 3]。

求使数组所有元素相等所需的最少操作次数(可以为零)。

输入格式

The input consists of multiple test cases. The first line contains a single integer tt (1≤t≤2⋅1041 \leq t \leq 2 \cdot 10^4) — the number of test cases. Description of the test cases follows.

The first line of each test case contains an integer nn (1≤n≤2⋅1051 \leq n \leq 2 \cdot 10^5) — the length of the array.

The second line of each test case consists of nn integers a1,a2,…,ana_1, a_2, \dots, a_n (1≤ai≤n1 \leq a_i \leq n) — the elements of the array aa.

It is guaranteed that the sum of nn over all test cases does not exceed 2⋅1052 \cdot 10^5.

输入包含多个测试用例。第一行包含一个整数 tt(1≤t≤2⋅1041 \leq t \leq 2 \cdot 10^4),表示测试用例的数量。随后是各测试用例的描述。

每个测试用例的第一行包含一个整数 nn(1≤n≤2⋅1051 \leq n \leq 2 \cdot 10^5),表示数组的长度。

每个测试用例的第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \dots, a_n(1≤ai≤n1 \leq a_i \leq n),表示数组 aa 的元素。

保证所有测试用例的 nn 之和不超过 2⋅1052 \cdot 10^5。

输出格式

Print tt lines, each line containing the answer to the corresponding test case — the minimum number of operations needed to make equal all the elements of the array with the given operation.

输出 tt 行,每行包含对应测试用例的答案——即使用给定操作使数组中所有元素相等所需的最少操作次数。

输入输出样例

  • 输入#1

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

    输出#1

    0
    1
    1
    2
    0

说明/提示

In the first test, all elements are equal, therefore no operations are needed.

In the second test, you can apply one operation with k=1k=1 and l=1l=1, set a1:=a2a_1 := a_2, and the array becomes [1,1][1, 1] with 11 operation.

In the third test, you can apply one operation with k=1k=1 and l=4l=4, set a4:=a5a_4 := a_5, and the array becomes [4,4,4,4,4][4, 4, 4, 4, 4].

In the fourth test, you can apply one operation with k=1k=1 and l=3l=3, set a3:=a4a_3 := a_4, and the array becomes [4,2,3,3][4, 2, 3, 3], then you can apply another operation with k=2k=2 and l=1l=1, set a1:=a3a_1 := a_3, a2:=a4a_2 := a_4, and the array becomes [3,3,3,3][3, 3, 3, 3].

In the fifth test, there is only one element, therefore no operations are needed.

在第一个测试用例中,所有元素均相等,因此无需任何操作。

在第二个测试用例中,你可以执行一次操作,其中 k=1k=1 且 l=1l=1,令 a1:=a2a_1 := a_2,数组变为 [1,1][1, 1],共需 11 次操作。

在第三个测试用例中,你可以执行一次操作,其中 k=1k=1 且 l=4l=4,令 a4:=a5a_4 := a_5,数组变为 [4,4,4,4,4][4, 4, 4, 4, 4]。

在第四个测试用例中,你可以先执行一次操作,其中 k=1k=1 且 l=3l=3,令 a3:=a4a_3 := a_4,数组变为 [4,2,3,3][4, 2, 3, 3];然后执行另一次操作,其中 k=2k=2 且 l=1l=1,令 a1:=a3a_1 := a_3、a2:=a4a_2 := a_4,数组变为 [3,3,3,3][3, 3, 3, 3]。

在第五个测试用例中,数组仅含一个元素,因此无需任何操作。

输入解题思路,AI测评打分。不知道怎么写?

首页