CF1905F.Field Should Not Be Empty

省选/NOI-

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

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

题目描述

You are given a permutation†^{\dagger} pp of length nn.

We call index xx good if for all y<xy \lt x it holds that py<pxp_y \lt p_x and for all y>xy \gt x it holds that py>pxp_y \gt p_x. We call f(p)f(p) the number of good indices in pp.

You can perform the following operation: pick 22 distinct indices ii and jj and swap elements pip_i and pjp_j.

Find the maximum value of f(p)f(p) after applying the aforementioned operation exactly once.

†^{\dagger}A permutation of length nn is an array consisting of nn distinct integers from 11 to nn in arbitrary order. For example, [2,3,1,5,4][2,3,1,5,4] is a permutation, but [1,2,2][1,2,2] is not a permutation (22 appears twice in the array), and [1,3,4][1,3,4] is also not a permutation (n=3n=3 but there is 44 in the array).

给你一个长度为 nn 的排列†^{\dagger} pp。

我们称下标 xx 是好的,当且仅当:对所有 y<xy \lt x,都有 py<pxp_y \lt p_x;且对所有 y>xy \gt x,都有 py>pxp_y \gt p_x。定义 f(p)f(p) 为排列 pp 中好下标的个数。

你可以执行如下操作一次:任选两个不同的下标 ii 和 jj,并交换 pip_i 与 pjp_j。

求在恰好执行一次上述操作后,f(p)f(p) 的最大可能值。

†^{\dagger} 长度为 nn 的排列是指由 11 到 nn 这 nn 个互不相同的整数以任意顺序组成的数组。例如,[2,3,1,5,4][2,3,1,5,4] 是一个排列,但 [1,2,2][1,2,2] 不是排列(数字 22 在数组中出现了两次),[1,3,4][1,3,4] 也不是排列(此时 n=3n=3,但数组中出现了 44)。

输入格式

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

The first line of each test case contains a single integer nn (2≤n≤2⋅1052 \le n \le 2 \cdot 10^5) — the length of the permutation pp.

The second line of each test case contain nn distinct integers p1,p2,…,pnp_1, p_2, \ldots, p_n (1≤pi≤n1 \le p_i \le n) — the elements of the permutation pp.

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

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

每个测试用例的第一行包含一个整数 nn(2≤n≤2⋅1052 \le n \le 2 \cdot 10^5),表示排列 pp 的长度。

每个测试用例的第二行包含 nn 个互不相同的整数 p1,p2,…,pnp_1, p_2, \ldots, p_n(1≤pi≤n1 \le p_i \le n),即排列 pp 的元素。

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

输出格式

For each test case, output a single integer — the maximum value of f(p)f(p) after performing the operation exactly once.

对于每个测试用例,输出一个整数——恰好执行一次操作后 f(p)f(p) 的最大值。

输入输出样例

  • 输入#1

    5
    5
    1 2 3 4 5
    5
    2 1 3 4 5
    7
    2 1 5 3 7 6 4
    6
    2 3 5 4 1 6
    7
    7 6 5 4 3 2 1

    输出#1

    3
    5
    2
    3
    2

说明/提示

In the first test case, p=[1,2,3,4,5]p = [1,2,3,4,5] and f(p)=5f(p)=5 which is already maximum possible. But must perform the operation anyway. We can get f(p)=3f(p)=3 by choosing i=1i=1 and j=2j=2 which makes p=[2,1,3,4,5]p = [2,1,3,4,5].

In the second test case, we can transform pp into [1,2,3,4,5][1,2,3,4,5] by choosing i=1i=1 and j=2j=2. Thus f(p)=5f(p)=5.

在第一个测试用例中,p=[1,2,3,4,5]p = [1,2,3,4,5],此时 f(p)=5f(p)=5,已达到可能的最大值。但仍然必须执行一次操作。若选择 i=1i=1 和 j=2j=2,可得到 p=[2,1,3,4,5]p = [2,1,3,4,5],此时 f(p)=3f(p)=3。

在第二个测试用例中,通过选择 i=1i=1 和 j=2j=2,可将 pp 变换为 [1,2,3,4,5][1,2,3,4,5],此时 f(p)=5f(p)=5。

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

首页