CF2152E.Monotone Subsequence

提高+/省选-

通过率:0%

AC君温馨提醒

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

题目描述

这是一个交互题。

Faker 又在调皮了。你让他出一道好玩的查询题,结果他却出了一道需要你来和他互动的题。Faker 把一个排列藏了起来,而你需要通过与他的互动来推断出一些有趣的信息。

给定一个整数 nn。Faker 藏了一个长度为 n2+1n^2+1 的排列 p1,p2,…,pn2+1p_1, p_2, \ldots, p_{n^2+1}。你的目标是找出这个隐藏排列中长度恰好为 n+1n+1 的单调子序列(递增或递减皆可)。可以证明,任意长度为 n2+1n^2+1 的排列都必然包含一个长度为 n+1n+1 的单调子序列。关于这个证明的更多信息,你可以参考维基百科页面。

为此,你最多可以向交互器发起 nn 次“摩天大楼”查询,查询方式如下:

  • 你提供一个长度为 kk 的下标集合,按严格递增顺序排列:i1,i2,…,iki_1, i_2, \ldots, i_k。
  • 交互器会查看排列中这些下标对应的数值:pi1,pi2,…,pikp_{i_1}, p_{i_2}, \ldots, p_{i_k}。
  • 之后,交互器返回其中可见的摩天大楼的下标。下标 iji_j 可见,当且仅当 pijp_{i_j} 的值大于你查询中该下标前的所有元素的值。也就是说,pij>pimp_{i_j} > p_{i_m},对于所有 1≤m<j1 \le m < j。这等价于找出序列 (pi1,…,pik)(p_{i_1}, \ldots, p_{i_k}) 的左侧最大值的位置。

在最多 nn 次查询后,你需要给出一个长度恰好为 n+1n+1 的有效单调子序列。

注意,排列 pp 在你查询前就已经确定,不会根据查询而改变。

∗^*排列定义为长度为 mm 的数组,包含 11 到 mm 的所有整数且各不重复,顺序任意。例如,[2,3,1,5,4][2,3,1,5,4] 是一个排列但 [1,2,2][1,2,2] 不是(22 出现了两次),[1,3,4][1,3,4] 也不是(长度为 33 却有 44)。

输入格式

每个测试点包含多组测试数据。第一行为测试用例组数 tt(1≤t≤50001 \le t \le 5000)。接下来每组测试数据一行,包含一个整数 nn(1≤n≤1001 \le n \le 100)。

保证所有测试用例中 ∑(n2+1)≤10 001\sum (n^2+1) \le 10\,001。

输出格式

(与交互器详见题目说明)

输入输出样例

  • 输入#1

    2
    1
    
    2 1 2
    
    2
    
    1 1
    
    2 2 3

    输出#1

    ? 2 1 2
    
    ! 1 2
    
    ? 3 1 2 3
    
    ? 3 2 3 5
    
    ! 1 3 4

说明/提示

对于第一个测试用例,n=1n=1,隐藏排列为 p=[1,2]p=[1,2]。

  • 对于查询 ? 2 1 2,可见的摩天大楼在下标 11 和 22,交互器返回 2 1 2。
  • 在下标 1,21,2 处报告一个长度为 22 的递增子序列。

对于第二个测试用例,n=2n=2,隐藏排列为 p=[5,3,4,1,2]p=[5,3,4,1,2]。

  • 对于查询 ? 3 1 2 3,可见的摩天大楼在下标 11,交互器返回 1 1。
  • 对于查询 ? 3 2 3 5,可见的摩天大楼在下标 22 和 33,交互器返回 2 2 3。
  • 在下标 1,3,41,3,4 处报告一个长度为 33 的递减子序列。

虽然 Faker 扮演的是交互器,但交互器永远不会欺骗你。

由 ChatGPT 5 翻译

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

首页