CFCF2173E.Shiro's Mirror Duel

提高+/省选-

通过率:0%

AC君温馨提醒

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

题目描述

这个世界上没有所谓的幸运。胜者在游戏开始前就已经决定了。

——《NO GAME NO LIFE》

这是一个交互题。

有一天,空与白又感到无聊,于是他们决定用一场游戏来解决。

一开始,空给白一个长度为 nn 的排列 p1,p2,,pnp_1, p_2, \ldots, p_n。每进行一次操作,白可以选择两个不同的下标 xxyy1xyn1 \leq x \neq y \leq n)。然后空会抛一枚公正的硬币:

  • 0.50.5 的概率,空会交换 pxp_xpyp_y
  • 0.50.5 的概率,空会交换 pnx+1p_{n-x+1}pny+1p_{n-y+1}

操作后,空会回复实际被交换的下标对,使白可以相应地更新自己的排列。

白的目标是在不超过 2.5n+800\lfloor 2.5n+800\rfloor 次操作内,将排列 pp 升序排序。请你帮助她达成目标!

^{\ast} 长度为 nn 的排列是指包含 nn 个从 11nn 的不同整数的数组。例如,[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)。

输入格式

每个测试包含多组数据。第一行包含测试数据组数 tt1t1001 \leq t \leq 100)。每组测试数据描述如下:

每组测试的第一行包含一个整数 nn1n40001 \leq n \leq 4000),表示排列 pp 的长度。

第二行包含 nn 个整数 p1,p2,,pnp_1, p_2, \ldots, p_n,表示排列 pp 的元素。

保证所有测试数据中 n2104\sum n \leq 2\cdot 10^4

保证本题共有 50 组测试数据。

输出格式

(交互题,具体细节请参考题面或平台说明。)

输入输出样例

  • 输入#1

    2
    5
    5 1 3 4 2
    
    1 5
    
    2 1
    
    2
    1 2

    输出#1

    ? 1 5
    
    ? 4 5
    
    !
    
    
    !

说明/提示

在第一个测试用例中,n=5n=5,初始排列是 [5,1,3,4,2][5,1,3,4,2]

  • 我们输出 ? 1 5,交互器返回 1 5,表示 1155 这两个位置的元素被交换(没有反射)。此时数组变为 [2,1,3,4,5][2,1,3,4,5]
  • 我们输出 ? 4 5,交互器返回 2 1,这实际上是我们选的 4,5{4,5} 的“镜像”,因为 n=5n=5,所以 n4+1=2n-4+1=2n5+1=1n-5+1=1,我们就需要交换第 2211 位元素。数组变为 [1,2,3,4,5][1,2,3,4,5]
  • 现在排列已经有序,所以我们输出 !。这行输出不计入操作次数限制。

在第二个测试用例中,给定的排列本身就是升序排列,仅需输出 !。

首页