CF2032C.Trinity

普及/提高-

通过率:0%

AC君温馨提醒

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

题目描述

给定 nn 个元素的数组 a1,a2,…,ana_1, a_2, \ldots, a_n。

你可以进行如下操作任意次(包括 0 次):

  • 选择两个下标 i,j (1≤i,j≤n)i, j\ (1 \le i, j \le n),令 ai:=aja_i := a_j。

现请你求出使数组 aa 满足下列条件所需的最少操作次数。

  • 对每个下标三元组 (x,y,z) (1≤x,y,z≤n,x≠y,y≠z,z≠x)(x, y, z)\ (1 \le x, y, z \le n, x \neq y, y \neq z, z \neq x) ,都有以 ax,ay,aza_x, a_y, a_z 为长度的三条线段可以构成一个非退化三角形。

输入格式

题目有多组数据。

第一行有一个整数 T (1≤T≤104)T\ (1 \le T \le 10^4) ,表示测试数据组数。

对每一组数据,

第一行包括一个整数 n (3≤n≤2×105)n \ (3 \le n \le 2 \times 10^5) 表示数组 aa 的元素个数。

第二行有 nn 个整数 a1,a2,…,an (1≤ai≤109)a_1, a_2, \ldots, a_n \ (1 \le a_i \le 10^9) 表示数组 aa 的元素。

保证所有 nn 的和不超过 2×1052 \times 10^5。

输出格式

对每一组数据,输出一个整数表示最少操作次数。

输入输出样例

  • 输入#1

    4
    7
    1 2 3 4 5 6 7
    3
    1 3 2
    3
    4 5 3
    15
    9 3 8 1 6 5 3 8 2 1 4 2 9 4 7

    输出#1

    3
    1
    0
    8

说明/提示

对第一组样例,一种可能的操作方式如下:

  • 令 a1:=a4=4a_1 := a_4 = 4,数组变为 [4,2,3,4,5,6,7][4, 2, 3, 4, 5, 6, 7]。
  • 令 a2:=a5=5a_2 := a_5 = 5,数组变为 [4,5,3,4,5,6,7][4, 5, 3, 4, 5, 6, 7]。
  • 令 a7:=a4=4a_7 := a_4 = 4,数组变为 [4,5,3,4,5,6,4][4, 5, 3, 4, 5, 6, 4]。

可以证明最终的数组符合条件,并且 3 次操作是最少的。

对第二组样例,我们令 a1:=a2=3a_1 := a_2 = 3 使数组变为 a=[3,3,2]a = [3, 3, 2] 即可。

对第三组样例,既然 3,4,53, 4, 5 已经可以构成三角形的三条边,我们并不需要进行任何操作。

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

首页