misc#P23023. SPY finding NPY

SPY finding NPY

题目描述

最近,SPY 从 XCPC 退役了。他非常怀念从零开始学习算法并赢得 ICPC 金牌的时光。所以他正在寻找一个 NPY(非编程青年)作为他的接班人。SPY 非常受欢迎,有 nn 个 NPY 想要成为他的徒弟。由于 SPY 只需要一个 NPY,他为这 nn 个 NPY 设置了一个测试。规则如下:

nn 个 NPY 的编号从 11nn。SPY 将按顺序面试这 nn 个 NPY。第 ii 个 NPY 将在第 ii 次面试中接受测试。面试完一个 NPY 后,SPY 会得到她的 IQ(智商)数值(一个在 [0,202320232023][0, 2023^{2023^{2023}}] 范围内的整数)。SPY 可以决定是否接受她。一旦他接受了某个 NPY,测试结束,他不会继续面试后面的 NPY。一旦他拒绝了某个 NPY,就不会再给她机会。

注意,没有两个 NPY 的 IQ 是相同的。SPY 有一个特殊的策略来找到高 IQ 的 NPY。他在测试前设定一个整数 kk0k<n0 \leq k < n)。

  1. 无论前 kk 个 NPY 有多聪明,他都会拒绝。SPY 会记录前 kk 个 NPY 中最高的 IQ 值 xx。如果 k=0k = 0,则 x=1x = -1
  2. 然后他将面试第 (k+1)(k + 1) 到第 (n1)(n - 1) 个 NPY。一旦 SPY 面试到一个 IQ 高于 xx 的 NPY,他就会接受她并结束测试。
  3. 如果没有 NPY 被接受,SPY 将接受第 nn 个 NPY。

nn 个 NPY 的 IQ 排名是随机的,这意味着他们的排名是 1n1 \sim n 的一个排列,并且 n!n! 种可能情况出现的概率相等。尽管 SPY 是实用算法大师,但他很难设定这个数字 kk。你能帮他计算出,为了最大化选到 IQ 最高的 NPY 的概率,所需的最小 kk 值是多少吗?

输入格式

第一行包含一个整数 TT1T1041 \leq T \leq 10^{4}),表示测试用例的数量。

接下来的 TT 行,每行包含一个整数 nn1n1041 \leq n \leq 10^{4}),表示 NPY 的数量。

输出格式

对于每个测试用例,输出一行一个整数,表示整数 kk

8
1
2
3
4
9000
9001
9002
9003
0
0
1
1
3311
3311
3311
3312

解释 #1

在第三个测试用例中,有 33 个 NPY。令数组 pp 表示 IQ 排名。第 ii 个 NPY 的 IQ 排名是 pip_ipu=1p_u = 1 的第 uu 个 NPY 具有最低的 IQ,pv=3p_v = 3 的第 vv 个 NPY 具有最高的 IQ。

共有 3!=63! = 6 种等概率出现的情况。下表显示了所有情况下被接受的 NPY 的 IQ 排名,以及选到最高 IQ NPY 的概率。

情况 k=0k = 0 k=1k = 1 k=2k = 2
p=[1,2,3]p = [1, 2, 3] 11 22 33
p=[1,3,2]p = [1, 3, 2] 33 22
p=[2,1,3]p = [2, 1, 3] 22 33
p=[2,3,1]p = [2, 3, 1] 11
p=[3,1,2]p = [3, 1, 2] 33 22 2 2
p=[3,2,1]p = [3, 2, 1] 11 1 1
概率 1/31/3 1/21/2 1/31/3