#2252. 徐老师的并查集函数

徐老师的并查集函数

题目描述

马上就要复赛了,徐老师最近刚复习了 并查集 这个知识点

在并查集中,如果使用路径压缩,那时间复杂度总体将会是 O(n)O(n),非常高效

如果还能够学会进一步较难的优化——启发式合并之后,并查集的每个操作平均时间仅为 O(α(n))O(\alpha(n)),所有操作几乎可以当做 O(1)O(1) 使用(当然,对于普及组的选手而言,能够熟练运用路径压缩即可)

其中 α\alpha 为阿克曼函数的反函数,即为最大的整数 mm 使得 akm(m,m)n\text{akm}(m, m) \leqslant n

现在徐老师想要具体的估计一下对于不同数据范围的 nn,使用路径压缩+启发式合并优化后的并查集的时间复杂度是多少

P.S.阿克曼(Ackermann)函数 akm(m,n)\text{akm}(m,n) 中,m,nm, n 定义域是非负整数,函数值定义为:

  • m=0m=0 时:akm(m,n)=n+1\text{akm}(m,n)=n+1
  • m>0m>0n=0n=0 时:akm(m,n)=akm(m1,1)\text{akm}(m,n)=\text{akm}(m-1,1)
  • m>0m>0n>0n>0 时:akm(m,n)=akm(m1,akm(m,n1))\text{akm}(m,n)=\text{akm}(m-1,\text{akm}(m,n-1))

输入格式

本题采用多组测试数据,输入第一行包含一个整数 TT 表示数据组数

接下来 TT 行,每行包含一个整数 nn 表示这组测试数据给出的询问

输出格式

对于每组测试数据,输出一个整数表示对应的 α(n)\alpha(n) 的值

数据范围

数据点编号 TT nn
11 T103T \leq 10^3 1n101 \le n \le 10
22 1n1001 \le n \le 100
33 1n10181 \le n \le 10^{18}
454 \sim 5 T106T \leq 10^6

样例输入1

4
2 
3
45
678

样例输出1

0
1
2
3